您的位置:首页 > 数据库 > 其它 > 正文

如何获取存储过程返回值

更多 时间:2014-5-6 类别:数据库 浏览量:5308

如何获取存储过程返回值

如何获取存储过程返回值

一、Sql Server存储过程反回值应用举例
 

1、OUPUT参数返回值
 

  • SQL 代码   复制
  • 
    CREATE PROCEDURE [dbo].[nb_order_insert](
    @o_buyerid int ,
    @o_id bigint OUTPUT
    )
    AS
    BEGIN
    SET NOCOUNT ON;
    BEGIN
    INSERT INTO [Order](o_buyerid )
    VALUES (@o_buyerid )
    SET @o_id = @@IDENTITY
    END
    END
    
    		
  •  

    调用示例
     

  • SQL 代码   复制
  • 
    DECLARE @o_buyerid int
    DECLARE @o_id bigint
    EXEC [nb_order_insert] @o_buyerid,@o_id output
    
    		
  •  

    2、RETURN过程返回值
     

  • SQL 代码   复制
  • 
    CREATE PROCEDURE [dbo].[nb_order_insert](
    @o_buyerid int ,
    @o_id bigint OUTPUT
    )
    AS
    BEGIN
    SET NOCOUNT ON;
    IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_buyerid ))
    BEGIN
    INSERT INTO [Order](o_buyerid ) VALUES (@o_buyerid ) 
    SET @o_id = @@IDENTITY 
    RETURN 1 — 插入成功返回1 
    END 
    ELSE 
    RETURN 0 — 插入失败返回0 END
    
    		
  •  

    调用示例

  •  
  • SQL 代码   复制
  • 
    DECLARE @o_buyerid int
    DECLARE @o_id bigint
    DECLARE @result bit
    EXEC @result = [nb_order_insert] @o_buyerid ,o_id output
    
    		
  •  

    二、C#获取存储过程返回值

     

    存储过程 

  • SQL 代码   复制
  • 
    alter procedure NorthwindSearch
    (
         @productID int
    )
    as
     
    return 1
     
    go
    
    		
  •  

    C#获取存储过程返回值代码

  •  
  • C# 代码   复制
  • 
    protected void btnBack_Click(object sender, EventArgs e)
    {
            //调用存储过程
            stringconStr=ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString();
            SqlConnection conn = new SqlConnection(conStr);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "NorthwindSearch";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection=conn;
            conn.Open();
            SqlParameter sp = new SqlParameter("@productID", SqlDbType.Int);
            sp.Value = int.Parse(txtProduct.Text.Trim());
            cmd.Parameters.Add(sp);
     
            //定义输出参数
            SqlParameter returnValue = new SqlParameter("@returnValue", SqlDbType.Int);
            returnValue.Direction = ParameterDirection.ReturnValue;
            cmd.Parameters.Add(returnValue);
            cmd.ExecuteNonQuery();
            txtSupplierID.Text = returnValue.Value.ToString();
            conn.Close();
     
    }
    
    		
  •  

    注意,(return)这种方式 只能返加数值类型

     

     

    三、C#获取Output输出参数值
     

    存储过程

  •  
  • SQL 代码   复制
  • 
    alter procedure NorthwindSearch
    (
         @productID int,
         @outputValue nvarchar(50) output
     
    )
    as
     Select @outputValue=SupplierID 
     from products where ProductID=@productID
    go
    
    		
  •  

    C#获取存储过程返回值代码

  •  
  • C# 代码   复制
  • 
    protected void btnBack_Click(object sender, EventArgs e)
    {
            //调用存储过程
            string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString();
            SqlConnection conn = new SqlConnection(conStr);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "NorthwindSearch";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection=conn;
            conn.Open();
            SqlParameter sp = new SqlParameter("@productID", SqlDbType.Int);
            sp.Value = int.Parse(txtProduct.Text.Trim());
            cmd.Parameters.Add(sp);
     
            //定义输出参数
            sp = new SqlParameter("@outputValue", SqlDbType.NVarChar,50);
            sp.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(sp);
            cmd.ExecuteNonQuery();
            txtSupplierID.Text = cmd.Parameters[1].Value.ToString();
            conn.Close();
     
        }
    
    		
  • 备注:输出参数方式可以返回任何类型的数据

     

     

    四、获取存储过程返回值总结


    1、存储过程共分为3类


    A.返回记录集的存储过程---------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录
    B.返回数值的存储过程(也可以称为标量存储过程)-----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令
    C.行为存储过程---------用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作


    2、含有return的存储过程其返回值为return返回的那个值


    3、没有return的存储过程,不论执行结果有无记录集,其返回值是0
    4、带输出参数的存储过程:如果有return则返回return返回的那个值,如果要select输出参数,则出现输出参数的值,于有无return无关

     

    您可能感兴趣