获取存储过程返回值及代码中获取返回值

1.OUPUT参数返回值
例: 向Order表插入一条记录,返回其标识

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

存储过程中获得方法:

DECLARE   @o_buyerid   int
DECLARE   @o_id   bigint
EXEC   [ nb_order_insert ]   @o_buyerid  ,o_id  bigint

2.RETURN过程返回值

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_shopid
))
BEGIN

INSERT INTO [Order] (o_buyerid )
VALUES (@o_buyerid
 )
SET @o_id = @@IDENTITY

RETURN 1  — 插入成功返回1
END

ELSE
RETURN 0  — 插入失败返回0
END

存储过程中的获取方法
DECLARE   @o_buyerid   int
DECLARE   @o_id   bigint
DECLARE   @result   bit
EXEC   @result   =   [ nb_order_insert ]   @o_buyerid  ,o_id  bigint  

3.SELECT 数据集返回值

CREATE PROCEDURE [dbo].[nb_order_select] (
@o_id int

)
AS
BEGIN
SET NOCOUNT ON ;
SELECT o_id,o_buyerid FROM [Order]

WHERE o_id = @o_id
GO

存储过程中的获取方法
(1)、使用临时表的方法

CREATE   TABLE   [ dbo ] . [ Temp ] (
[ o_id ]   [ bigint ]   IDENTITY ( 1 , 1 NOT   FOR   REPLICATION   NOT   NULL ,
[ o_buyerid ]   [ int ]   NOT   NULL
)
INSERT   [ Temp ]   EXEC   [ nb_order_select ]   @o_id
– 这时 
Temp  就是EXEC执行SELECT 后的结果集
SELECT   *   FROM   [ Temp ]
DROP   [ Temp ]  — 删除临时表

(2)、速度不怎么样.(不推荐)

SELECT   *   from   openrowset (’provider_name ' , ' Trusted_Connection = yes’, ' exec nb_order_select’)





1.获取Return返回值

程序代码 程序代码
//存储过程
//Create PROCEDURE MYSQL
//     @a int,
//     @b int
//AS
//     return @a + @b
//GO
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
conn.Open();
SqlCommand MyCommand = new SqlCommand("MYSQL", conn);
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
MyCommand.Parameters["@a"].Value = 10;
MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
MyCommand.Parameters["@b"].Value = 20;
MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
MyCommand.ExecuteNonQuery();
Response.Write(MyCommand.Parameters["@return"].Value.ToString());


2.获取Output输出参数值

程序代码 程序代码
//存储过程
//Create PROCEDURE MYSQL
//     @a int,
//     @b int,
//     @c int output
//AS
//     Set @c = @a + @b
//GO
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
conn.Open();
SqlCommand MyCommand = new SqlCommand("MYSQL", conn);
MyCommand.CommandType = CommandType.StoredProcedure;
MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
MyCommand.Parameters["@a"].Value = 20;
MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
MyCommand.Parameters["@b"].Value = 20;
MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int));
MyCommand.Parameters["@c"].Direction = ParameterDirection.Output;
MyCommand.ExecuteNonQuery();
Response.Write(MyCommand.Parameters["@c"].Value.ToString());




C#接收存储过程返回值:

     public static int User_Add(User us)
     {
         int iRet;
         SqlConnection conn = new SqlConnection(Conn_Str);
         SqlCommand cmd = new SqlCommand("User_Add", conn);
         cmd.CommandType = CommandType.StoredProcedure;
         cmd.Parameters.AddWithValue("@UName", us.UName);
         cmd.Parameters.AddWithValue("@UPass", us.UPass);
         cmd.Parameters.AddWithValue("@PassQuestion", us.PassQuestion);
         cmd.Parameters.AddWithValue("@PassKey", us.PassKey);
         cmd.Parameters.AddWithValue("@Email", us.Email);
         cmd.Parameters.AddWithValue("@RName", us.RName);
         cmd.Parameters.AddWithValue("@Area", us.Area);
         cmd.Parameters.AddWithValue("@Address", us.Address);
         cmd.Parameters.AddWithValue("@ZipCodes", us.ZipCodes);
         cmd.Parameters.AddWithValue("@Phone", us.Phone);
         cmd.Parameters.AddWithValue("@QQ", us.QQ);
         cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue;      
         try
         {
             conn.Open();
             cmd.ExecuteNonQuery();
             iRet = (int)cmd.Parameters["@RETURN_VALUE"].Value;
         }
         catch (SqlException ex)
         {
             throw ex;
         }
         finally
         {
             conn.Close();
         }
         return iRet;
     }

C#接收存储过程输出参数:

    public static decimal Cart_UserAmount(int UID)
    {
        decimal iRet;
        SqlConnection conn = new SqlConnection(Conn_Str);
        SqlCommand cmd = new SqlCommand("Cart_UserAmount", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@UID", UID);
        cmd.Parameters.Add("@Amount", SqlDbType.Decimal).Direction=ParameterDirection.Output;
        try
        {
            conn.Open();
            cmd.ExecuteNonQuery();
            iRet = (decimal)cmd.Parameters["@Amount"].Value;
        }
        catch (SqlException ex)
        {
            throw ex;
        }
        finally
        {
            conn.Close();
        }
        return iRet;
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值