谓存储过程就是Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。由于存储过程被预先编译过,所以执行起来要比单行SQL语句效率高出很多,在应用程序开发过程中应尽可能的采用存储过程进行数据的增加、更新、删除和查询操作,以提升应用程序的整体运行效率。执行SQLServer的存储过程需要如下步骤:1、生成SqlCommand对象并将其CommandText属性设置为存储过程的名称或包含过程调用的EXECUTE语句。2、增加过程调用所需要的参数到SqlCommand对象中,记住将任何输出参数的Direction属性设置为ParameterDirection.Output,代码如下:comm.Parameters[@msg].Direction=ParameterDirection.Output;这些输出参数可以在存储过程调用中用T-SQLOUTPUT关键字定义,也可以在实际过程中用RETURN语句返回。如果用RETURN语句返回执行结果,需要给SqlCommand对象的Parameters列表,添加如下代码:comm.Parameters.Add(RETURN_VALUE,SqlDbType.Int);并将Direction属性设置为ParameterDirection.ReturnValue,代码如下:comm.Parameters[RETURN_VALUE].Direction=ParameterDirection.ReturnValue;3、用ExecuteNonQuery()方法执行SqlCommand对象。4、读取任何输出参数的值。执行只有返回值的存储过程1、后台建立存储过程createprocselectserverdate@datevarchar(14)OUTput,@datetimedatetimeoutputASSET@date=DATENAME(yy,GETDATE())+‘年’+DATENAME(mm,GETDATE())+‘月’+DATENAME(dd,GETDATE())+'日'SET@datetime=getdate()2、前台调用执行存储过程SqlCommandcmd=newSqlCommand(“selectserverdate”,con);//建立SqlCommand对象cmd.CommandType=CommandType.StoredProcedure;//设置SqlCommand对象执行类型为存储过程cmd.Parameters.Add(“@date”,SqlDbType.VarChar,14);//向Parameters参数列表添加参数cmd.Parameters.Add(@datetime,SqlDbType.DateTime,8);cmd.Parameters[“@date”].Direction=ParameterDirection.Output;//设置参数的输出类型cmd.Parameters[@datetime].Direction=ParameterDirection.Output;cmd.ExecuteNonQuery();//执行存储过程Session[“date”]=cmd.Parameters[“@date”].Value;//获取存储过程的返回值Session[datetime]=cmd.Parameters[@datetime].Value;DateTimeweekday=newDateTime();weekday=Convert.ToDateTime(cmd.Parameters[@datetime].Value);stringdate=weekday.DayOfWeek.ToString();执行带输入参数、输出参数和返回值的存储过程1、后台建立存储过程createprocIUD_dept(@zxcsASVARCHAR(6),@deptASvarchar(10),@IDASuniqueidentifier,@msgvarchar(16)output)asbegintranBEGINif@zxcs='INSERT'BEGININSERTINTOdept(dept)VALUES(@dept)ENDif@zxcs='UPDATE'BEGINDECLARE@OLD_DEPTVARCHAR(10)SELECT@OLD_DEPT=deptFROMDEPTWHEREID=@IDUPDATEVERIFYSETdept=@deptWHEREdept=@OLD_DEPTUPDATEdeptSETdept=@deptWHEREID=@IDENDif@zxcs='DELETE'BEGINDELETEFROMdeptWHEREID=@IDENDENDif@@error0BEGINrollbacktranSET@msg='数据'+@zxcs+'失败?'SELECT@msg--输出后在前台接收RETURN1ENDelseBEGINcommittranSET@msg='数据'+@zxcs+'成功!'SELECT@msg--输出后在前台接收RETURN0END2、前台调用执行存储过程//设置增删改的存储过程所需要的参数comm=newSqlCommand(IUD_dept,con);//建立SqlCommand对象comm.CommandType=CommandType.StoredProcedure;//设置SqlCommand对象执行类型为存储过程comm.Parameters.Add(@zxcs,SqlDbType.VarChar,6);//向Parameters参数列表添加参数comm.Parameters.Add(@dept,SqlDbType.VarChar,10);comm.Parameters.Add(@id,SqlDbType.UniqueIdentifier);comm.Parameters.Add(@msg,SqlDbType.VarChar,16);comm.Parameters.Add(“RETURN_VALUE”,SqlDbType.Int);//有RETURN返回值需要向参数列表添加comm.Parameters[@msg].Direction=ParameterDirection.Output;//设置参数的输出类型comm.Parameters[“RETURN_VALUE”].Direction=ParameterDirection.ReturnValue;comm.Parameters[“@zxcs”].Value=“INSERT”;//执行INSERT操作comm.Parameters[“@dept”].Value=“信息组”;comm.Parameters[@id].Value=newGuid(6D739432-3EDD-458C-9C52-5C2EA74A5DD6“);comm.ExecuteNonQuery();Response.Write(comm.Parameters[@msg].Value+“br“);Response.Write(comm.Parameters[RETURN_VALUE].Value+“br“);if((Int32)comm.Parameters[“RETURN_VALUE”].Value==0){代码块}说明:SQLServer中的UniqueIdentifier数据类型在.NET中需要使用newGuid()类进行转换