存储过程使用

来源:互联网 发布:淘宝店家进货方式 编辑:程序博客网 时间:2024/06/07 05:20

谓存储过程就是Transact-SQL语句的预编译集合,这些语句在一个名称下存储并作为一个单元进行处理。由于存储过程被预先编译过,所以执行起来要比单行SQL语句效率高出很多,在应用程序开发过程中应尽可能的采用存储过程进行数据的增加、更新、删除和查询操作,以提升应用程序的整体运行效率。

执行SQL Server的存储过程需要如下步骤:

1、生成SqlCommand对象并将其CommandText属性设置为存储过程的名称或包含过程调用的   EXECUTE语句。

2、增加过程调用所需要的参数到SqlCommand对象中,记住将任何输出参数的Direction属性设置为ParameterDirection.Output,代码如下:

   comm.Parameters["@msg"].Direction=ParameterDirection.Output;

   这些输出参数可以在存储过程调用中用T-SQL OUTPUT关键字定义,也可以在实际过程中用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、后台建立存储过程

create  proc selectserverdate

@date varchar(14) OUTput,@datetime datetime output

AS

SET @date=DATENAME(yy,GETDATE())+‘年’+ DATENAME(mm,GETDATE())+‘月’

          + DATENAME(dd,GETDATE()) +'日'

SET @datetime=getdate()

2、前台调用执行存储过程

SqlCommand cmd=new SqlCommand(“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;

DateTime  weekday=new DateTime();

weekday=Convert.ToDateTime(cmd.Parameters["@datetime"].Value);

string  date=weekday.DayOfWeek.ToString();

 

执行带输入参数、输出参数和返回值的存储过程

 

1、后台建立存储过程

 

create proc IUD_dept(@zxcs AS VARCHAR(6),@dept AS varchar(10),

@ID AS uniqueidentifier,@msg varchar(16) output)

as

begin tran

  BEGIN

    if @zxcs='INSERT'

       BEGIN

         INSERT INTO dept(dept) VALUES(@dept)

       END

    if @zxcs='UPDATE'

       BEGIN

         DECLARE @OLD_DEPT VARCHAR(10)

         SELECT @OLD_DEPT=dept FROM DEPT WHERE ID=@ID

         UPDATE VERIFY SET dept=@dept WHERE dept=@OLD_DEPT

         UPDATE dept SET dept=@dept WHERE ID=@ID

       END

    if @zxcs='DELETE'

       BEGIN

         DELETE FROM dept WHERE ID=@ID

       END

  END

if @@error<>0

   BEGIN

     rollback tran

     SET @msg='数据'+@zxcs+'失败?'

     SELECT @msg--输出后在前台接收

     RETURN 1

   END

else

   BEGIN

     commit tran

     SET @msg='数据'+@zxcs+'成功!'

     SELECT @msg--输出后在前台接收

     RETURN 0

   END

2、前台调用执行存储过程

//设置增删改的存储过程所需要的参数

comm=new SqlCommand("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=new Guid("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)

 {  代码块 }

说明:SQL Server中的UniqueIdentifier数据类型在.NET中需要使用new Guid()类进行转换

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手被蝎子蛰了怎么办 被东亚钳蝎蛰了怎么办 孕37周羊水过多怎么办 孕38周羊水过多怎么办 孕39周羊水过多怎么办 生完孩子腿关节疼怎么办 手指上长了倒刺怎么办 肥肉吃多了恶心怎么办 大便粘稠怎么回事还便秘怎么办 狗狗大便次数多怎么办 宝宝拉白色稀便怎么办 5个月宝宝流鼻涕怎么办 5个月婴儿流鼻涕怎么办 五个月宝宝流鼻涕鼻塞怎么办 4个月宝宝流鼻涕怎么办 大便经常是稀的怎么办 拉黑色的稀大便怎么办 孕晚期半夜饿了怎么办 肠胃不好大便不成型怎么办 螃蟹吃多了过敏怎么办 吃螃蟹过敏很痒怎么办 吃螃蟹喝啤酒了怎么办 1个月宝宝拉肚子怎么办 被雨林蝎子蛰了怎么办 在家被蜈蚣咬了怎么办 宝宝被蝎子蜇了怎么办 仓鼠只吃面包虫怎么办 套装但是装等低怎么办 被香港人骗了钱怎么办 被红头蛇咬了怎么办 爸妈吵架闹离婚怎么办 包包用酒精擦了怎么办 灰色泰迪毛发白怎么办 手被野猫抓伤了怎么办 想去香港玩两天怎么办 受凉了一直想吐怎么办 受寒后头晕想吐怎么办 肚子受凉了想吐怎么办 想吐但吐不出来怎么办 抽烟抽的牙黄怎么办 借了大耳窿的钱怎么办