0

我被困在这个存储过程中分配的变量值上。

@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

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

4

2 回答 2

1
SELECT     @Title1 = dbo.Types.TypeName
,          @Title2 = Types_1.TypeName
...
于 2012-11-04T18:49:04.800 回答
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 调用,则需要将 ParameterDirection 设置为 Output 或 InputOutput,使用参数调用 proc,然后读取参数的值。

于 2012-11-04T23:04:56.337 回答