存储过程的输出参数,返回值与结果集

每一种存款和储蓄进程都有暗许的重回值,暗中认可值为0。上边大家独家看看在management
studio中如何查看输出参数,重回值以至结果集,然后大家再在ASP.NET调用存款和储蓄进度中什么得到输出参数,再次来到值以至结果集。
首先:在sql server management
studio中查看输出参数,再次来到值以至结果集。本示例以Northwind数据库为例。
复制代码 代码如下: create proc Employee
@Rowcount int=0 output as begin SELECT * FROM
[Northwind].[dbo].[Employees] set @Rowcount=@@ROWCOUNT end
运转以上存款和储蓄进度的代码如下: 运转代码 复制代码 代码如下: USE [Northwind] GO DECLARE
@return_value int, @MyOutput int EXEC @return_value =
[dbo].[Employee] @Rowcount = @MyOutput OUTPUT SELECT @MyOutput as
N’输出参数的值’ SELECT ‘Return再次来到的值’ = @return_value GO
输出的结果如下: 能够见见是通过EXEC @return_value =
[dbo].[Employee] @Rowcount = @MyOutput
OUTPUT中的return_value变量来得到再次回到值,而用MyOutput变量来得到了出口变量值,此处的MyOutput变量也等于援用传递!
接下来将斟酌ASP.NET调用存款和储蓄进度中什么赢得输出参数,重临值以至结果集。
复制代码 代码如下: protected void
Page_Load(object sender, EventArgs e) { SqlConnection con = new
SqlConnection(“server=.;database=Northwind;uid=sa;pwd=1;”); SqlCommand
cmd = new SqlCommand(); cmd.Connection = con;
cmd.CommandText=”Employee”; cmd.CommandType =
CommandType.StoredProcedure; SqlParameter para = new
SqlParameter(“@Rowcount”, SqlDbType.Int, 4); para.Direction =
ParameterDirection.Output; cmd.Parameters.Add(para);
cmd.Parameters.Add(“@return_value”, SqlDbType.Int, 4);
cmd.Parameters[“@return_value”].Direction =
ParameterDirection.ReturnValue; con.Open(); cmd.ExecuteNonQuery();
Response.Write(cmd.Parameters[“@Rowcount”].Value.ToString()+”br/”);
Response.Write(cmd.Parameters[“@return_value”].Value.ToString(State of Qatar卡塔尔(قطر‎; }
此处定义了Rowcount输出变量,甚至return_value重回值变量。输出Roucount输出变量的值为9,而return_value的值为0。

1.OUPUT参数重回值

赢得存款和储蓄进程再次回到值及代码中拿走重回值

复制代码 代码如下:CREATE PROCEDURE
[dbo].[nb_order_insert](@o_buyerid int ,@o_id bigint
OUTPUT)ASBEGINSET NOCOUNT ON;BEGININSERT INTO [Order](o_buyerid
)VALUES (@o_buyerid )SET @o_id = @@IDENTITYENDEND存储进程中获取情势:

1.OUPUT参数重临值 例:
向Order表插入一条记下,再次来到其标志

复制代码 代码如下:DECLARE @o_buyerid
intDECLARE @o_id bigintEXEC [nb_order_insert] @o_buyerid,@o_id
output2.RETURubiconN经过再次来到值

图片 1CREATE PROCEDURE [dbo].[nb_order_insert](
图片 2@o_buyerid int ,
图片 3@o_id bigint OUTPUT
图片 4)
图片 5AS

图片 6BEGIN
图片 7SET NOCOUNT ON;
图片 8BEGIN

图片 9INSERT INTO [Order](o_buyerid )
图片 10VALUES (@o_buyerid )
图片 11SET @o_id = @@IDENTITY

图片 12END
图片 13END

复制代码 代码如下:CREATE PROCEDURE
[dbo].[nb_order_insert](@o_buyerid int ,@o_id bigint
OUTPUT)ASBEGINSET NOCOUNT ON;IF(EXISTS(SELECT * FROM [Shop] WHERE
[s_id] = @o_buyerid ))BEGININSERT INTO [Order](o_buyerid ) VALUES
(@o_buyerid ) SET @o_id = @@IDENTITY RETU凯雷德N 1 — 插入成功重临1 END ELSE
RETU奥迪Q3N 0 — 插入战败重回0 END存款和储蓄进程中的获取形式

存款和储蓄进程中取得形式:

复制代码 代码如下:DECLARE @o_buyerid
intDECLARE @o_id bigintDECLARE @result bitEXEC @result =
[nb_order_insert] @o_buyerid ,o_id output3.SELECT 数据集再次回到值

图片 14DECLARE @o_buyerid int
图片 15DECLARE @o_id bigint
图片 16EXEC [nb_order_insert] @o_buyerid ,o_id bigint

复制代码 代码如下:CREATE PROCEDURE
[dbo].[nb_order_select](@o_id int)ASBEGINSET NOCOUNT ON;SELECT
o_id,o_buyerid FROM [Order]WHERE o_id =
@o_idGO存款和储蓄进度中的获取格局

**2.RETU奥迪Q5N经过再次回到值

、使用有时表的艺术

**

复制代码 代码如下: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] —
删除不常表1.获取Return再次回到值

图片 17CREATE PROCEDURE [dbo].[nb_order_insert](
图片 18@o_buyerid int ,
图片 19@o_id bigint OUTPUT
图片 20)
图片 21AS

图片 22BEGIN
图片 23SET NOCOUNT ON;
图片 24IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_shopid))
图片 25BEGIN

图片 26INSERT INTO [Order](o_buyerid )
图片 27VALUES (@o_buyerid )
图片 28SET @o_id = @@IDENTITY

图片 29RETU大切诺基N 1 — 插入成功重回1
图片 30END

图片 31ELSE
图片 32RETUWranglerN 0 — 插入失利重临0
图片 33END

复制代码 代码如下:SqlConnection conn =
new
SqlConnection(ConfigurationManager.ConnectionStrings[“ConnStr”].ToString());conn.Open();SqlCommand
MyCommand = new SqlCommand(“nb_order”, conn卡塔尔国;
//存款和储蓄进度名字MyCommand.CommandType = CommandType.StoredProcedure;
//钦赐类型为存储进度MyCommand.Parameters.Add(new SqlParameter(“@a”,
SqlDbType.IntState of Qatar卡塔尔国;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(State of Qatar;
//试行存款和储蓄进度Response.Write(MyCommand.Parameters[“@return”].Value.ToString(卡塔尔State of Qatar;
//获得return的重返值

仓库储存进度中的获取方式

2.获取Output输出参数值

图片 34DECLARE @o_buyerid int
图片 35DECLARE @o_id bigint
图片 36DECLARE @result bit
图片 37EXEC @result = [nb_order_insert] @o_buyerid ,o_id bigint