SQL Server存储过程中的多个变量

时间:2012-11-04 18:43:12

标签: sql-server variables stored-procedures

我坚持在此存储过程中分配变量值。

@EntityID int,
@Title1 varchar(10) OUTPUT,
@Title2 varchar(10) OUTPUT
AS
  Declare @T1 varchar(10)
  Declare @T2 varchar(10)
BEGIN

    SELECT     
       dbo.Entity.EntityID, dbo.Types.TypeName AS Title1, Types_1.TypeName AS Title2
    FROM         
       dbo.Entity 
    LEFT OUTER JOIN
       dbo.Types AS Types_1 ON dbo.Entity.Title2 = Types_1.TypeID 
                            AND dbo.Entity.Title2 = Types_1.TypeID 
    LEFT OUTER JOIN
       dbo.Types ON dbo.Entity.Title1 = dbo.Types.TypeID
    WHERE     
       (dbo.Entity.EntityID = @EntityID)
END

我正在尝试返回Title1Title2的值。查询有效,并返回值,但我需要在其他地方使用它们。

2 个答案:

答案 0 :(得分:1)

SELECT     @Title1 = dbo.Types.TypeName
,          @Title2 = Types_1.TypeName
...

答案 1 :(得分:1)

你需要做两件事:

首先,使用SELECT或SET在PROC中的某处设置这些参数的值。正如@Andomar所提到的,这可以通过像这样更改SELECT语句来完成(在现有代码中,您将返回具有相同名称但实际上未设置参数的列中的值):

SELECT @Title1 = dbo.Types.TypeName, @Title2 = Types_1.TypeName

然后你需要在你的调用程序中捕获这些值。我不确定您是从另一个SQL代码还是从ADO.NET等代码调用此存储过程。如果来自SQL,您需要首先声明输出参数,然后像这样调用proc:

DECLARE @Title1 VARCHAR(10), @Title2 VARCHAR(10)
EXEC MyProc @Title1=@Title1 OUTPUT, @Title2=@Title2 OUTPUT

如果您从ADO.NET调用,则需要set the ParameterDirection as Output or InputOutput,使用参数调用proc,然后读取参数的值。