我坚持在此存储过程中分配变量值。
@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
我正在尝试返回Title1
和Title2
的值。查询有效,并返回值,但我需要在其他地方使用它们。
答案 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,然后读取参数的值。