SqlServer获取存储过程返回值的实例

2022-05-24 0 1,063

1.OUPUT参数返回值

复制代码 代码如下:

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 output

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_buyerid ))

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 output

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] — 删除临时表

1.获取Return返回值

复制代码 代码如下:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“ConnStr”].ToString());

conn.Open();

SqlCommand MyCommand = new SqlCommand(“nb_order”, 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()); //取得return的返回值

2.获取Output输出参数值

复制代码 代码如下:

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings[“ConnStr”].ToString());

conn.Open();

SqlCommand MyCommand = new SqlCommand(“nb_order”, 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;   //指定存储过程  AddWithValue可以指定名称和值,而Add需要指定名称,类型,再给value

         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;    //取得return的值

         }

         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;  //利用Add方法为其添加名称,类型和输出参数

        try

        {

            conn.Open();

            cmd.ExecuteNonQuery();

            iRet = (decimal)cmd.Parameters[“@Amount”].Value;  //取得存储过程中的输出参数

        }

        catch (SqlException ex)

        {

            throw ex;

        }

        finally

        {

            conn.Close();

        }

        return iRet;

    }

C#取得结果集:

复制代码 代码如下:

string sqlw = string.Format(“exec sp_UserInfo {0}”, uid);

            DataTable dsuser = SqlConn.GetDataSet(sqlw).Tables[0];

 public static DataSet GetDataSet(string sql)
        {
            string connStr = System.Configuration.ConfigurationManager.ConnectionStrings[“ConnStr”].ToString();
            SqlConnection conn = new SqlConnection(connStr);
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataAdapter da = new SqlDataAdapter(cmd);  //直接用SqlDataAdapter将结果集取出来放入dataset中
            DataSet ds = new DataSet();
            da.Fill(ds);
            conn.Close();
            cmd.Dispose();
            return ds;
        }

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 MsSql SqlServer获取存储过程返回值的实例 https://www.niceym.com/61353.html