有没有办法让Stored Procedure通过一次调用返回结果集的整个列?
我有一个存储过程,它根据引用查询一组用户。
情景:
有办法做到这一点吗?
SP片段
DECLARE @clientId Int,
DECLARE @userId OUTPUT
SELECT @userId = UserId FROM Clients WHERE clientName = @clientId
由于
答案 0 :(得分:1)
您只需编写如下所示的SP,不带任何参数,以便它返回该特定客户端的所有UserIds的数据表。
CREATE PROCEDURE GetALLUserIdsForClient
@clientId AS Int
AS
BEGIN
SELECT UserId FROM Clients WHERE clientName = @clientId
END
从C#代码调用以上存储过程。这将返回一个数据表。您的C#代码可以循环并将用户添加到组。
答案 1 :(得分:0)
是的,在sql server中很容易,你必须指定RETURNS TABLE子句。
--Transact-SQL Inline Table-Valued Function Syntax
CREATE FUNCTION [ schema_name. ] function_name
( [ { @parameter_name [ AS ] [ type_schema_name. ] parameter_data_type
[ = default ] [ READONLY ] }
[ ,...n ]
]
)
RETURNS TABLE
[ WITH <function_option> [ ,...n ] ]
[ AS ]
RETURN [ ( ] select_stmt [ ) ]
[ ; ]
完整语法和手册:http://technet.microsoft.com/pl-pl/library/ms186755.aspx
哦,如果可编程对象返回值,那么它被称为函数而不是过程。程序在很多方面与功能不同。