2011-06-24 66 views
0

我希望我能理解一個簡單的存儲過程得到一些幫助。 基本上,我想將select語句的輸出存儲在變量中,然後打印出變量的值。瞭解簡單的存儲過程:將輸出移動到一個變量

我發現了一個非常類似的問題在這裏: Simple Stored Procedure Question

,代碼如下所示:

CREATE PROCEDURE ReturnPrice 
    @carID int, 
    @price decimal(18,2) output 
AS 
    SELECT 
     @price = Price 
    FROM 
     dbo.Cars 
    WHERE 
     CarID = @carID 

我的問題是:我如何獲得@carID的價值?

如果我試試這個:

declare @carOutput varchar(50) 
exec carInformation, '@carOutput varchar(50) output', @carOutput output 

我得到的錯誤:

Msg 170, Level 15, State 1, Line 3 
Line 3: Incorrect syntax near ','. 

謝謝!

+0

「我如何獲得@carID的價值?」 - 你是怎麼想'明白'的?在proc中,作爲另一個輸出變量,等等?目前還不清楚你想如何使用@carID。什麼是'carInformation'與'ReturnPrice'? –

回答

5
exec carInformation, '@carOutput varchar(50) output', @carOutput output 
        ^bad 

exec carInformation '@carOutput varchar(50) output', @carOutput output 
        ^good 

而且'@carOutput varchar(50) output'必須是一個整數,但你傳遞一個字符串

你需要有調用應用程序已經知道@carID值,程序使用該值來返回價錢。

所以你可以試試:

DECLARE @CarID_x int 
     ,@Price_x decimal(18,2) 

SET @CarID_x=123 

EXEC ReturnPrice @CarID, @Price_x OUTPUT 
PRINT @Price_x 

DECLARE @Price_x decimal(18,2) 

EXEC ReturnPrice 123, @Price_x OUTPUT 
PRINT @Price_x 

兩個代碼示例上方將返回Price列值的dbo.Cars行中具有的123CarID值。

如果你不知道CarID然後運行:

SELECT 
     CarID, Price 
    FROM dbo.Cars 

,你會得到一個包含所有的價格對所有的汽車一個結果集。

相關問題