视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SqlServer获取存储过程返回值的实例
2020-11-09 07:07:30 责编:小采
文档

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;
        }

您可能感兴趣的文章:

  • sqlserver存储过程中SELECT 与 SET 对变量赋值的区别
  • SQL Server 2008 存储过程示例
  • 如何在SQL Server 2008下轻松调试T-SQL语句和存储过程
  • 一些SQL Server存储过程参数及例子
  • sqlserver 存储过程中If Else的用法实例
  • sqlserver中查找所有包含了某个文本的存储过程
  • Sql Server中存储过程中输入和输出参数(简单实例 一看就懂)
  • sqlserver 各种判断是否存在(表名、函数、存储过程等)
  • SQL Server 分页查询存储过程代码
  • SQL Server存储过程同时返回分页结果集和总数
  • 下载本文
    显示全文
    专题