获取存储过程返回值及代码中获取返回值
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;
    }

转载于:https://www.cnblogs.com/CarreyWu/archive/2011/07/15/2107332.html

获取存储过程返回值及代码中获取返回值(转)相关推荐

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

    获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...

  2. 安卓代码中获取dp值为控件设置宽高,获取dimen值

    引言: 今天遇到一个问题,在自定义控件的时候,要求在代码中设置控件的宽高.本来自以为:对嘛,很简单,就是直接设置params //这样直接初始化的时候设置LayoutParams iconparams ...

  3. java如何取到配置文件中值,从配置文件中获取配置信息的几种方法

    1.利用ResourceBundle类从properties文件中获取配置信息 创建配置文件并写入配置信息 image.png 使用以下代码可以轻松获取配置信息 package com.course. ...

  4. 如何从代码中获取当前方法的名称[复制]

    本文翻译自:How to get the name of the current method from code [duplicate] This question already has an a ...

  5. 在代码中获取ApplicationContext实例

    基于Spring的Java应用会通过ApplicationContext接口提供应用程序配置.我们常常需要在代码中获取当前的ApplicationContext.如在集成测试时,需要通过Applica ...

  6. SpringBoot - application.yml配置文件中yes/no,on/off在代码中读取的值为true/false

    写在前面 在SpringBoot的项目中,当在配置文件中配置的值为yes/no或者on/off时,在SpringBoot内部解析时会将yes/no,on/off解析为true/false. 参数配置 ...

  7. 如何在R代码中找到一个值的行号

    如何在R代码中找到一个值的行号? 例如: 在以下一组值中,如何在第4列中找到特定值的行号? 如何使用R代码命令找到列4中的值"1578"的行号. > mydata_2sex ...

  8. 获取父线程 java_java子线程中获取父线程的threadLocal中的值

    我们都知道线程本地变量表也就是ThreadLocal在我们做线程级的数据隔离时非常好用,但是有时候我们会想如何让子线程获取到父线程的ThreadLocal,其实在线程中除了ThreadLocal外还有 ...

  9. vue页面返回消息头获取_vue在响应头response中获取自定义headers操作

    日常开发,我们可能会为了安全问题,保证第三方无法通过伪造返回报文欺骗前端,需要在返回报文中添加自定义参数,用于验证身份,后端添加自定义参数,前端校验自定义参数通过后才会执行相应的操作. 系统为了安全会 ...

最新文章

  1. apache 不执行PHP,显示代码
  2. python中用于标识字符串的定界符_Python合集之Python数据类型(二)
  3. 2、Python连接Mysql数据库。
  4. 洛谷 1351 联合权值——树形dp
  5. 流式计算框架Storm编程案例:实时给手机品牌转大写并加上时间戳后缀代码示例
  6. html将边框向下移的代码,设置margin-left实现div右移
  7. UniDBGrid增加显示记录数的label及隐藏refresh按钮
  8. python showinfo 方法_Python GUI之tkinter窗口视窗教程大集合(看这篇就够了)
  9. 疫情向左、大基金向右,国产光刻胶走到了哪一步?
  10. sublime ctrl b突然不能用解决方法
  11. oracle中t,Oracle中如何用T
  12. Thread类中的常用方法
  13. 麦克风阵列的同步性、一致性、峰值幅度、RMS、DC偏移
  14. 动易CMS如何能实现直接粘贴把图片上传到服务器中
  15. 云编程那些事2 - Java之父的啤酒密谋
  16. 超全!52个数据可视化图表鉴赏~~
  17. 从网上下载一个vue项目,跑起来的全过程
  18. 多库多表场景下使用 Amazon EMR CDC 实时入湖最佳实践
  19. 如何让血管“返老还童”
  20. 【Maxent物种分布模型】气候变化对响尾蛇地理分布的影响

热门文章

  1. asp.net 2.0中允许一次上传多个文件的设计
  2. python 源代码 macd双底 高 低_MACD指标DIFF双底与双顶:买入与卖出
  3. 函数上下文this和参数列表arguments介绍
  4. 缓存穿透、缓存击穿、缓存雪崩概述缓存一致性的解决方案
  5. Zookeeper概述详细解释(Zookeeper3.6)
  6. 中国传媒大学计算机学院夏令营,中国传媒大学夏令营
  7. 服务器系统bsd,BSD操作系统大盘点:其它BSD变体
  8. php项目如何导jdbc包,JDBC-idea导入mysql连接java的jar包(mac)的方法
  9. 特征筛选6——肯德尔相关系数筛选特征(单变量筛选)
  10. python使用新的有序序列重新替换原有的值