Chinaunix首页 | 论坛 | 博客
  • 博客访问: 482604
  • 博文数量: 112
  • 博客积分: 5696
  • 博客等级: 大校
  • 技术积分: 1720
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-17 09:58
文章分类

全部博文(112)

文章存档

2011年(22)

2010年(28)

2009年(21)

2008年(41)

分类:

2010-09-17 16:45:14

执行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(向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 

         UPDATE VERIFY SET  WHERE 
         UPDATE dept SET  WHERE 
       END
    if @zxcs='DELETE'
       BEGIN
         DELETE FROM dept WHERE 

       END
  END
if @@error<>0
   BEGIN
     rollback tran
     SET @msg='数据
失败?'
     SELECT @msg--输出后在前台接收
     RETURN 1
   END
else
   BEGIN
     commit tran
     SET @msg='数据
成功!'
     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+“
“);
Response.Write(comm.Parameters["RETURN_VALUE"].Value +“
“);
if((Int32)comm.Parameters[“RETURN_VALUE”].Value==0)
 {  代码块 }
阅读(3919) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~