如何获取存储过程返回值
如何获取存储过程返回值
一、Sql Server存储过程反回值应用举例
1、OUPUT参数返回值
CREATE PROCEDURE [dbo].[nb_order_insert](
@o_buyerid int ,
@o_id bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
BEGIN
INSERT INTO [Order](o_buyerid )
VALUES (@o_buyerid )
SET @o_id = @@IDENTITY
END
END
调用示例
DECLARE @o_buyerid int
DECLARE @o_id bigint
EXEC [nb_order_insert] @o_buyerid,@o_id output
2、RETURN过程返回值
CREATE PROCEDURE [dbo].[nb_order_insert](
@o_buyerid int ,
@o_id bigint OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
IF(EXISTS(SELECT * FROM [Shop] WHERE [s_id] = @o_buyerid ))
BEGIN
INSERT INTO [Order](o_buyerid ) VALUES (@o_buyerid )
SET @o_id = @@IDENTITY
RETURN 1 — 插入成功返回1
END
ELSE
RETURN 0 — 插入失败返回0 END
调用示例
DECLARE @o_buyerid int
DECLARE @o_id bigint
DECLARE @result bit
EXEC @result = [nb_order_insert] @o_buyerid ,o_id output
二、C#获取存储过程返回值
存储过程
alter procedure NorthwindSearch
(
@productID int
)
as
return 1
go
C#获取存储过程返回值代码
protected void btnBack_Click(object sender, EventArgs e)
{
//调用存储过程
stringconStr=ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString();
SqlConnection conn = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "NorthwindSearch";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection=conn;
conn.Open();
SqlParameter sp = new SqlParameter("@productID", SqlDbType.Int);
sp.Value = int.Parse(txtProduct.Text.Trim());
cmd.Parameters.Add(sp);
//定义输出参数
SqlParameter returnValue = new SqlParameter("@returnValue", SqlDbType.Int);
returnValue.Direction = ParameterDirection.ReturnValue;
cmd.Parameters.Add(returnValue);
cmd.ExecuteNonQuery();
txtSupplierID.Text = returnValue.Value.ToString();
conn.Close();
}
注意,(return)这种方式 只能返加数值类型
三、C#获取Output输出参数值
存储过程
alter procedure NorthwindSearch
(
@productID int,
@outputValue nvarchar(50) output
)
as
Select @outputValue=SupplierID
from products where ProductID=@productID
go
C#获取存储过程返回值代码
protected void btnBack_Click(object sender, EventArgs e)
{
//调用存储过程
string conStr = System.Configuration.ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ToString();
SqlConnection conn = new SqlConnection(conStr);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "NorthwindSearch";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection=conn;
conn.Open();
SqlParameter sp = new SqlParameter("@productID", SqlDbType.Int);
sp.Value = int.Parse(txtProduct.Text.Trim());
cmd.Parameters.Add(sp);
//定义输出参数
sp = new SqlParameter("@outputValue", SqlDbType.NVarChar,50);
sp.Direction = ParameterDirection.Output;
cmd.Parameters.Add(sp);
cmd.ExecuteNonQuery();
txtSupplierID.Text = cmd.Parameters[1].Value.ToString();
conn.Close();
}
备注:输出参数方式可以返回任何类型的数据
四、获取存储过程返回值总结
1、存储过程共分为3类
A.返回记录集的存储过程---------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录
B.返回数值的存储过程(也可以称为标量存储过程)-----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令
C.行为存储过程---------用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作
2、含有return的存储过程其返回值为return返回的那个值
3、没有return的存储过程,不论执行结果有无记录集,其返回值是0
4、带输出参数的存储过程:如果有return则返回return返回的那个值,如果要select输出参数,则出现输出参数的值,于有无return无关