Tsql 如何在单个存储过程中使用多个输出参数
我有一个SP,其输出参数如下所示:Tsql 如何在单个存储过程中使用多个输出参数,tsql,stored-procedures,Tsql,Stored Procedures,我有一个SP,其输出参数如下所示: ALTER PROCEDURE[dbo].[SP_Name]@VarName decimal(18,2)输出为 我从vb.net调用该过程以获取计算值。我的问题是:我有8个SP,其结构如下: CREATE PROCEDURE [dbo].[SP_Name] @VarName decimal(18,2) OUTPUT as ... CREATE TABLE @TempTable Begin Select ... End SET @VarName = Result
ALTER PROCEDURE[dbo].[SP_Name]@VarName decimal(18,2)输出为
我从vb.net调用该过程以获取计算值。我的问题是:我有8个SP,其结构如下:
CREATE PROCEDURE [dbo].[SP_Name] @VarName decimal(18,2) OUTPUT as ...
CREATE TABLE @TempTable
Begin
Select ...
End
SET @VarName = Result
但诱惑总是一样的。不,我正在寻找一种只使用一个存储过程获取所有8个值的方法。我的想法是:
CREATE PROCEDURE [dbo].[SP_Name] @VarName decimal(18,2) OUTPUT as ...
CREATE TABLE @TempTable
---Get first value
Begin
Select ...
End
SET @VarName1 = Result
---Get second value
Begin
Select ...
End
SET @VarName2 = Result
...
如何重写该行:
ALTER PROCEDURE[dbo].[SP_Name]@VarName decimal(18,2)OUTPUT
ir我甚至可以使用数组吗?您可以使用一个存储过程,其中包含所有查询。下面将返回一个包含八个字段的单行结果集,您可以使用特定的字段名或索引从代码中获取它们
CREATE PROCEDURE [dbo].[SP_Name]
@VarName decimal(18,2)
AS
BEGIN
DECLARE @VarName1 Datatype, @VarName2 Datatype, ...@VarName8 Datatype
SELECT @VarName1 = yourCol
FROM --First query
SELECT @VarName2 = yourCol
FROM --Second query
...
SELECT @VarName8 = yourCol
FROM --Eighth query
--Finally Select all the variables
SELECT @VarName1 Col1, @VarName2 Col2, ...,@VarName8 Col8
END
或者,如果您希望返回全部8个查询的结果,也可以这样做。只需在单个存储过程中执行select查询并从代码中获取
数据集
,就可以使用基于零的索引访问单个表(例如DataTable1=YourDataSet.Tables[0]
)Hi!谢谢你的回答。所以我想我会使用数据集解决方案。我想可能会有一个解决方案,我可以将所有8个值放入一个outputparameter(数组)中,并用如下内容调用它:cmd.Parameters.Add(“@Varname[1]”,SqlDbType.Int)。Direction=ParameterDirection.Output;好的,您可以在单个存储过程中使用一个或多个存储过程并访问它们,但在我看来,返回单个查询并获取它们很容易,而无需声明8个输出参数。