color:red

sql output参数 Sql Output 参数和asp.net的sqlparameter配合使用

sql output参数——通过储存过程返回多个值
时间:2010-1-22 18:03:00 字体:[大中小] 收藏 我要投稿
Sql Output 参数和asp.net的sqlparameter配合使用,在储存过程中返回多值。
不使用回传参数(output),储存过程一般只能返回单一值,值的类型可以是整数、字符串或者数据集。
有时候想在返回数据集的同时,返回一些统计数值,此刻就需要用到回传参数——具备output属性的参数。
看一下微软的文档:
建立储存过程例子:
USE AdventureWorks;
GO
IF OBJECT_ID('Sales.uspGetEmployeeSalesYTD', 'P') IS NOT NULL
DROP PROCEDURE Sales.uspGetEmployeeSalesYTD;
GO
CREATE PROCEDURE Sales.uspGetEmployeeSalesYTD
@SalesPerson nvarchar(50),
@SalesYTD money OUTPUT
AS
SET NOCOUNT ON;
SELECT @SalesYTD = SalesYTD
FROM Sales.SalesPerson AS sp
JOIN HumanResources.vEmployee AS e ON e.EmployeeID = sp.SalesPersonID
WHERE LastName = @SalesPerson;
RETURN
GO
在sql查询中使用带回传参数的存储过程:
-- Declare the variable to receive the output value of the procedure.
DECLARE @SalesYTDBySalesPerson money;
-- Execute the procedure specifying a last name for the input parameter
-- and saving the output value in the variable @SalesYTDBySalesPerson
EXECUTE Sales.uspGetEmployeeSalesYTD
N'Blythe', @SalesYTD = @SalesYTDBySalesPerson OUTPUT;
-- Display the value returned by the procedure.
PRINT 'Year-to-date sales for this employee is ' +
convert(varchar(10),@SalesYTDBySalesPerson);
GO
说明:也可以在执行存储过程时为 OUTPUT 参数指定输入值。这将允许存储过程从调用程序接收值,更改该值或使用该值执行操作,然后将新值返回调用程序。在上面的示例中,可以在执行存储过程之前为 @SalesYTDBySalesPerson 变量分配值。@SalesYTD 变量包含存储过程主体中的参数的值,当存储过程退出时,@SalesYTD 变量的值将返回调用程序。这常常被称作“传址调用功能”。
如果在执行存储过程时为参数指定 OUTPUT,而在存储过程中该参数又不是用 OUTPUT 定义的,那么将收到一条错误消息。执行存储过程时,可以执行带有 OUTPUT 参数的存储过程而不指定 OUTPUT。这样不会返回错误,但将无法在调用程序中使用输出值。
这里一般不会出现问题。出现问题的是跟Asp.Net搭配使用的时候,要注意参数的设置。一定要注意把SqlParameter的Direction设置为ParameterDirection.Output或者ParameterDirection.InputOutput,不然就会出现“参数没有提供”的错误。这个错误跟实际错误有些差距,一时半刻很难联想到是参数属性的问题,很容易被蒙倒。
参考网址:
使用 OUTPUT 参数返回数据 http://technet.microsoft.com/zh-cn/library/ms187004(SQL.90).aspx
Sql Output 参数应用 http://www.cnblogs.com/reommmm/archive/2009/01/14/1375816.html
本文来源于 龙卷风资讯网 http://www.ljf.cn/ ;原文地址:http://www.ljf.cn/2010/1/Item221463.html


 

posted on 2010-07-29 17:18  永不言弃program  阅读(2738)  评论(0编辑  收藏  举报

导航

color:red