2011-06-24 15 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の値を得るのですか?

私がしようとすると、この:

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

ありがとう:

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

私はエラーを取得します!すでに@carIDの値を知っているし、手続きは値を返すようにすることを使用しています

+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'はint型である必要がありますが、

はあなたが呼び出し側のアプリケーションを持っている必要があり、文字列で渡しています価格。

そうようなもの試みる:

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 

上記両方のコード例は、123CarID値を有するdbo.Cars行のPrice列の値を返します。

あなたが実行しCarIDがわからない場合:

SELECT 
     CarID, Price 
    FROM dbo.Cars 

を、あなたはすべての車のためのすべての価格を含む結果セットを取得します。

関連する問題