SqlServer如何获取存储过程的返回值
1.Output参数返回值

1 CREATE PROCEDURE [dbo].[upInformation](
2 @age int ,
3 @id bigint OUTPUT
4 )
5 AS
6 BEGIN
7 SET NOCOUNT ON;
8 BEGIN
9 INSERT INTO [Information](age )
10 VALUES (@age )
11 SET @id = @@IDENTITY
12 END
13 END

存储过程中获得方法:
1 DECLARE @age int
2 DECLARE @id bigint
3 EXEC [upInformation] @age,@id output
2.Return过程返回值

1 CREATE PROCEDURE [dbo].[upInformation](
2 @age int ,
3 @id bigint OUTPUT
4 )
5 AS
6 BEGIN
7 SET NOCOUNT ON;
8 IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @age ))
9 BEGIN
10 INSERT INTO [Information](age ) VALUES (@age )
11 SET @id = @@IDENTITY
12 RETURN 1 — 插入成功返回1
13 END
14 ELSE
15 RETURN 0 — 插入失败返回0
16 END

存储过程中获得方法:
1 DECLARE @age int
2 DECLARE @id bigint
3 DECLARE @result bit
4 EXEC @result = [upInformation] @age ,id output
3.Select数据集返回值

1 CREATE PROCEDURE [dbo].[upInformation](
2 @id int
3 )
4 AS
5 BEGIN
6 SET NOCOUNT ON;
7 SELECT id,age FROM [Information]
8 WHERE id = @id
9 GO

存储过程中获得方法:(使用临时表)

1 CREATE TABLE [dbo].[Temp](
2 [id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
3 [age] [int] NOT NULL
4 )
5 INSERT [Temp] EXEC [nb_order_select] @id
6 – 这时 Temp 就是EXEC执行SELECT 后的结果集
7 SELECT * FROM [Temp]
8 DROP [Temp] — 删除临时表
[id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[age] [int] NOT NULL
)
INSERT into @table1 EXEC [nb_order_select] @id
C#获取Return返回值

1 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ToString());
2 conn.Open();
3 SqlCommand MyCommand = new SqlCommand("upInformation", conn); //存储过程名字
4 MyCommand.CommandType = CommandType.StoredProcedure; //指定类型为存储过程
5 MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
6 MyCommand.Parameters["@a"].Value = 10;
7 MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
8 MyCommand.Parameters["@b"].Value = 20;
9 MyCommand.Parameters.Add(new SqlParameter("@return", SqlDbType.Int));
10 MyCommand.Parameters["@return"].Direction = ParameterDirection.ReturnValue;
11 MyCommand.ExecuteNonQuery(); //执行存储过程
12 Response.Write(MyCommand.Parameters["@return"].Value.ToString()); //取得return的返回值

C#获取Output输出参数值

1 SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ToString());
2 conn.Open();
3 SqlCommand MyCommand = new SqlCommand("upInformation", conn);
4 MyCommand.CommandType = CommandType.StoredProcedure;
5 MyCommand.Parameters.Add(new SqlParameter("@a", SqlDbType.Int));
6 MyCommand.Parameters["@a"].Value = 20;
7 MyCommand.Parameters.Add(new SqlParameter("@b", SqlDbType.Int));
8 MyCommand.Parameters["@b"].Value = 20;
9 MyCommand.Parameters.Add(new SqlParameter("@c", SqlDbType.Int));
10 MyCommand.Parameters["@c"].Direction = ParameterDirection.Output;
11 MyCommand.ExecuteNonQuery();
12 Response.Write(MyCommand.Parameters["@c"].Value.ToString()); //指定取得存储过程的返回值

C#接收存储过程返回值

1 public static int Information(User us)
2 {
3 int iRet;
4 SqlConnection conn = new SqlConnection(Conn_Str);
5 SqlCommand cmd = new SqlCommand("upInformation", conn);
6 cmd.CommandType = CommandType.StoredProcedure; //指定存储过程 AddWithValue可以指定名称和值,而Add需要指定名称,类型,再给value
7 cmd.Parameters.AddWithValue("@UName", us.UName);
8 cmd.Parameters.AddWithValue("@UPass", us.UPass);
9 cmd.Parameters.AddWithValue("@PassQuestion", us.PassQuestion);
10 cmd.Parameters.AddWithValue("@PassKey", us.PassKey);
11 cmd.Parameters.AddWithValue("@Email", us.Email);
12 cmd.Parameters.AddWithValue("@RName", us.RName);
13 cmd.Parameters.AddWithValue("@Area", us.Area);
14 cmd.Parameters.AddWithValue("@Address", us.Address);
15 cmd.Parameters.AddWithValue("@ZipCodes", us.ZipCodes);
16 cmd.Parameters.AddWithValue("@Phone", us.Phone);
17 cmd.Parameters.AddWithValue("@QQ", us.QQ);
18 cmd.Parameters.Add("@RETURN_VALUE", "").Direction = ParameterDirection.ReturnValue; //指定输出参数是返回值
19 try
20 {
21 conn.Open();
22 cmd.ExecuteNonQuery(); //执行存储过程
23 iRet = (int)cmd.Parameters["@RETURN_VALUE"].Value; //取得return的值
24 }
25 catch (SqlException ex)
26 {
27 throw ex;
28 }
29 finally
30 {
31 conn.Close();
32 }
33 return iRet;
34 }

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

1 public static decimal Cart_UserAmount(int UID)
2 {
3 decimal iRet;
4 SqlConnection conn = new SqlConnection(Conn_Str);
5 SqlCommand cmd = new SqlCommand("Cart_UserAmount", conn);
6 cmd.CommandType = CommandType.StoredProcedure;
7 cmd.Parameters.AddWithValue("@UID", UID);
8 cmd.Parameters.Add("@Amount", SqlDbType.Decimal).Direction=ParameterDirection.Output; //利用Add方法为其添加名称,类型和输出参数
9 try
10 {
11 conn.Open();
12 cmd.ExecuteNonQuery();
13 iRet = (decimal)cmd.Parameters["@Amount"].Value; //取得存储过程中的输出参数
14 }
15 catch (SqlException ex)
16 {
17 throw ex;
18 }
19 finally
20 {
21 conn.Close();
22 }
23 return iRet;
24 }

C#取得结果集

1 string sqlw = string.Format("exec sp_UserInfo {0}", uid);
2 DataTable dsuser = SqlConn.GetDataSet(sqlw).Tables[0];
3
4 public static DataSet GetDataSet(string sql)
5 {
6 string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnStr"].ToString();
7 SqlConnection conn = new SqlConnection(connStr);
8 SqlCommand cmd = new SqlCommand(sql, conn);
9 SqlDataAdapter da = new SqlDataAdapter(cmd); //直接用SqlDataAdapter将结果集取出来放入dataset中
10 DataSet ds = new DataSet();
11 da.Fill(ds);
12 conn.Close();
13 cmd.Dispose();
14 return ds;
15 }

SqlServer如何获取存储过程的返回值的更多相关文章
- 利用SQLServer查询分析器获取存储过程的返回值,检查测试存储过程
1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)如果通过查询分析器 ...
- ADO.NET中ExcuteNonQuery获取存储过程Return返回值
/// <summary> /// 获取当月用户已投票数量 /// </summary> /// <param name="userId">用户 ...
- 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值
关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...
- C#获取执行存储过程的" 返回值"代码
以下是C#代码: /// <summary> /// 执行存储过程,返回" 返回值" /// </summary> /// <param name=& ...
- 统计文件种类数+获取子shell返回值的其它方法
前言 只是作为一个shell的小小练习和日常统计用,瞎折腾的过程中也是摸到了获取子shell返回值的几种方法: 肯定还有别的方法,跟进程间的通信相关,希望你能提出建议和补充,谢谢~ 完整程序: #! ...
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
- web3调用call()方法获取不到返回值
一.web3的call()获取不到返回值问题和解决方法 在彩票小合约中,遇到一个问题:合约中 有两个方法 第一个返回一个账户地址,没有使用到当前方法调用者信息: 第二个使用到了当前方法调用者信息 在w ...
- 在Delphi中如何获得SQL中存储过程的返回值?
示例存储过程:create procedure proc_loginusername varchar(20),password varchar(20)asdeclare @result intsele ...
- .net 接收存储过程的返回值 。。。。
.net 接收存储过程的返回值 .... Posted on 2009-06-10 20:26 且行且思 阅读(...) 评论(...) 编辑 收藏 例如在向数据库添加新数据时,需要检测是否有重复 本 ...
随机推荐
- R语言学习——数据合并及绘制密度分布曲线图
setwd("E:/08_cooperation/07_X-lab/06-Crosstalk/Aadapter_primer")# 读取lane01.txt,并对其按列进行相加处理 ...
- from语法导入
"""# 在执行文件中能不能直接使用模块中的名字 # import m1# import m1 as m# print(m1.a)# print(m1.b)# print ...
- 逆卷积的详细解释ConvTranspose2d(fractionally-strided convolutions)
1.首先先定义进行卷积的参数: 输入特征图为高宽一样的Hin*Hin大小的x 卷积核大小kernel_size 步长stride padding填充数(填充0) 输出特征图为Hout*Hout大小的y ...
- yum下载安装redis
有时需要离线安装redis,所以需要redis离线安装包,不同的centos版本和redis版本,依赖包不同,本例中,centos: CentOS Linux release 7.0.1406 (Co ...
- dos命令的使用
echo 百度欢迎您 >d:\1.txt F7查看执行过的命令 直接进入 D盘 d: 创建目录 md fox 在fox目录下创建子目录user md fox\user\hello1 进入到use ...
- 关联分析中寻找频繁项集的FP-growth方法
关联分析是数据挖掘中常用的分析方法.一个常见的需求比如说寻找出经常一起出现的项目集合. 引入一个定义,项集的支持度(support),是指所有包含这个项集的集合在所有数据集中出现的比例. 规定一个最小 ...
- 【调试工具】tcpdump
[tcpdump]https://linux.cn/article-10191-1.html
- styled-components解决全局样式'injectGlobal' 废除的问题
最新版的 styled-components v4 已经将原有的 injectGlobal() 方法替换成了 createGlobalStyle() ,而且用法也和之前的 injectGlobal 方 ...
- LODOP打印用JS获取的当前日期
该文详细一步步解释JS获取当前时间的方法,新手小白也看到懂,最后是实际的获取当前年月份的方法.JS中的Date()对象,包含很多当前系统时间的方法,首先建立一个Date()对象,这里取名为date,然 ...
- Netty 中 LengthFieldBasedFrameDecoder 构造函数取值备忘
public LengthFieldBasedFrameDecoder(ByteOrder byteOrder, int maxFrameLength, int lengthFieldOffset, ...