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. 逆卷积的详细解释ConvTranspose2d(fractionally-strided convolutions)

    1.首先先定义进行卷积的参数: 输入特征图为高宽一样的Hin*Hin大小的x 卷积核大小kernel_size 步长stride padding填充数(填充0) 输出特征图为Hout*Hout大小的y ...

  2. 第一次java作业

    学习了c语言半个学期,好像刚开始并不担心Java,因为Java也是类同于C语言的一种语言,可是Java学到现在也将近一个月,在我脑子里现在却还没有一个框架,有点着急了.

  3. Unity3D介绍

    Unity3D介绍:Unity3D是一个游戏开发引擎 由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具 ...

  4. Git 本地保存账号密码的删除或修改

    转自:https://blog.csdn.net/lwqldsyzx/article/details/61228299 Git 本地拉取代码时需要输入用户名和密码时,会自动将用户名密码信息保存起来.需 ...

  5. 分布式唯一ID生成方案是什么样的?(转)

    一.前言 分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表.因为数据量巨大一张表无法承接,就会对其进行分库分表. 但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题, ...

  6. 使用eclipse启动tomcat里的项目时报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

    1.这种错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener刚开始看的时候 ...

  7. Java 静态内部类的加载时机

    参考文章:[https://www.cnblogs.com/maohuidong/p/7843807.html] 前言: 在看单例模式的时候,在网上找帖子看见其中有一种(IoDH) 实现单例的方式,其 ...

  8. 硬盘安装Kali

    网上找到一些用EasyBCD硬盘安装的方式,可能对Kali Linux 1.0 .2.0等较老版本有用.目前的最新的Kali Linux 2016.2 用EasyBCD可以进入 Live,但是进入li ...

  9. 使用Excel批量提取文件名

    Excel中如何快速选择所有奇数行或偶数行? 方法3:=MOD(ROW(),2) 总结:方法1和方法2的区别主要在ctrl键的使用 轻松将一个文件夹里所有的文件名提取出来,放到Excel表格里 &qu ...

  10. 洛谷 P1494 [国家集训队] 小Z的袜子

    题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...