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] — 删除临时表
declare @table1 table(

 [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如何获取存储过程的返回值的更多相关文章

  1. 利用SQLServer查询分析器获取存储过程的返回值,检查测试存储过程

    1.存储过程没有返回值的情况(即存储过程语句中没有return之类的语句)用方法 int count = ExecuteNonQuery(..)执行存储过程其返回值只有两种情况(1)如果通过查询分析器 ...

  2. ADO.NET中ExcuteNonQuery获取存储过程Return返回值

    /// <summary> /// 获取当月用户已投票数量 /// </summary> /// <param name="userId">用户 ...

  3. 关于ExecuteNonQuery执行存储过程的返回值 、、实例讲解存储过程的返回值与传出参数、、、C#获取存储过程的 Return返回值和Output输出参数值

    关于ExecuteNonQuery执行存储过程的返回值 用到过ExecuteNonQuery()函数的朋友们在开发的时候肯定这么用过. if(cmd.ExecuteNonQuery("xxx ...

  4. C#获取执行存储过程的" 返回值"代码

    以下是C#代码: /// <summary> /// 执行存储过程,返回" 返回值" /// </summary> /// <param name=& ...

  5. 统计文件种类数+获取子shell返回值的其它方法

    前言 只是作为一个shell的小小练习和日常统计用,瞎折腾的过程中也是摸到了获取子shell返回值的几种方法: 肯定还有别的方法,跟进程间的通信相关,希望你能提出建议和补充,谢谢~ 完整程序: #! ...

  6. 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

    1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...

  7. web3调用call()方法获取不到返回值

    一.web3的call()获取不到返回值问题和解决方法 在彩票小合约中,遇到一个问题:合约中 有两个方法 第一个返回一个账户地址,没有使用到当前方法调用者信息: 第二个使用到了当前方法调用者信息 在w ...

  8. 在Delphi中如何获得SQL中存储过程的返回值?

    示例存储过程:create procedure proc_loginusername varchar(20),password varchar(20)asdeclare @result intsele ...

  9. .net 接收存储过程的返回值 。。。。

    .net 接收存储过程的返回值 .... Posted on 2009-06-10 20:26 且行且思 阅读(...) 评论(...) 编辑 收藏 例如在向数据库添加新数据时,需要检测是否有重复 本 ...

随机推荐

  1. Ubuntu通过apt-get安装指定版本和查询软件源有多少个版本

    一.通过apt-get安装指定版本 apt-get install <<package name>>=<<version>> 二.查询指定软件有多少个版 ...

  2. [十二省联考2019]D1T2字符串问题

    嘟嘟嘟 省选Day1真是重大失误,T2连暴力都没时间写. 上周五重新答了遍Day1,竟然搞了187分吼吼吼吼. T2按40分写的暴力,结果竟然得了60分. 稍微说一下暴力吧:预处理哈希,对于一组支配关 ...

  3. sudo: no tty present and no askpass program specified

    sudo: no tty present and no askpass program specified | 学步园 https://www.xuebuyuan.com/2157339.html 通 ...

  4. JS学习笔记:(三)JS执行机制

    首先我们先明确一点:JavaScript是一门单线程语言.单线程也就是说同一时间只能执行一个任务,所有的任务都必须排队顺序执行.那么如果一个任务耗时很长,阻塞了其它任务的执行,就会给用户造成不友好的体 ...

  5. 队列(FIFO)—循环队列、队列的链式存储

    1 队列的定义 队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表. 2 队列的特点 1)先进先出是队列最大的特点,是应用中非常常见的模型,例如排队: 2)队列也属于线性表 ...

  6. 【MySQL 读书笔记】当我们在执行该查询语句的时候我们在干什么

    看了非常多 MySQL 相关的书籍和文章,没有看到过如此优秀的专栏.所以未来一段时间我会梳理读完该专栏的所学所得. 当我们在执行该查询语句的时候我们在干什么 mysql> select * fr ...

  7. Microsoft Connect 2018 Summary

    https://www.microsoft.com/en-us/connectevent/

  8. [2019.03.20]Linux Shell 执行传参数和expr

    前不久入职实习生,现在在帮着组里面dalao们跑Case,时不时要上去收一下有木有Dump,每次敲命令太烦人于是逼着自己学写Shell脚本.一开始真的是很痛苦啊,也没能搞到书,只能凭网上半真半假的消息 ...

  9. [数据库] windows server 2003下mysql出现10048错误的解决办法 Can't connect to MySQL server on '127.0.0.1' (10048)(抄)

    网站访问量大了的时候mysql连接数自然就多了,当超出mysql最大连接数的时候就会出现错误,当出现too many字样的错误的时候一般是因为连接数的问题,只需要修改最大连接数max_conectio ...

  10. DES的几种填补方式

    DES的几种填补方式 DES是对64位数据的加密算法,如数据位数不足64位的倍数,需要填充,补充到64位的倍数.   NoPadding    API或算法本身不对数据进行处理,加密数据由加密双方约定 ...