2012-11-04 66 views
0

我在此存儲過程中卡住了分配的變量值。SQL Server存儲過程中的多個變量

@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值。查詢工作,並返回值,但我需要在別處使用它們。

+3

你是什麼意思「在別處使用它們」? –

+0

我希望能夠將值發回給調用過程的應用程序。 – Steve

回答

1

你需要做兩件事情:

首先,在某處PROC設置這些參數的值,使用SELECT或SET。作爲@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 @[email protected] OUTPUT, @[email protected] OUTPUT 

如果你從ADO.NET打電話,你需要set the ParameterDirection as Output or InputOutput,調用帶有參數的PROC ,然後讀取參數的值。

+0

謝謝託比和安多瑪。我一度很接近,但是因爲我正在離開桌子別名,並且不斷髮生錯誤,所以我全部犯規。 – Steve

1
SELECT  @Title1 = dbo.Types.TypeName 
,   @Title2 = Types_1.TypeName 
... 
+0

我不明白把Andomar放在哪裏。 – Steve

相關問題