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. python接口自动化-post请求3

    一.SSL 证书 https 的请求相对于http安全级别高,需要验证SSL证书import urllib3 使用这个方法就可以了urllib3.disable_warnings() 可忽略警告 二. ...

  2. c++11の关联容器

    一.关联容器 C++的容器类型可以分为顺序容器和关联容器两大类.对于关联容器,主要有map和set,对于这两种,根据不同的维度,衍生出了8种容器 map                        ...

  3. go学习笔记(一)

  4. shell编程企业级实战(2)

    Vim配置文件.vimrc vim配置文件 if 条件语句 if是最常见的条件判断语句 例1:如果不存在/backup目录就创建. [root@web-01 /server/tools]# vim 0 ...

  5. emacs常用指令

    虽然平时用Dev,但考试的时候linux下没有Dev,只能用emacs了…… 这里记录一些我常用的指令和配置文件中的代码行. 指令: 1.c-x 1:只留一个窗口 2.c-x 2:分成上下两个窗口 3 ...

  6. 28 Python初学(事件驱动模型)

    参考文章地址:http://www.cnblogs.com/yuanchenqi/articles/5722574.html 两个步骤: recvfrom 系统调用 : 拷贝数据 从kernel到数据 ...

  7. RAC Wait Event: gcs log flush sync 等待事件 转

    RAC Wait Event: gcs log flush sync https://www.hhutzler.de/blog/rac-wait-event_gcs_log_flush_sync/#o ...

  8. 【alpha阶段】第十次Scrum Meeting

    每日任务内容 队员 昨日完成任务 明日要完成的任务 牛宇航 #26 评价总览接口编写https://github.com/rRetr0Git/rateMyCourse/issues/26 alpha阶 ...

  9. Linux增加开放端口号

    Linux增加开放端口号 : 方法一:命令行方式 1. 开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT   2.保存:/etc/ ...

  10. Tutorial 03_分布式数据库HBASE

    (一)编程实现一下内容,并用Hadoop提供的Shell命令完成相同任务: 编程实现: (1)列出HBase所有表的相关信息,例如表名; package tutorial01; import java ...