3

私は SQL が初めてで、ストアド プロシージャを作成しようとしています。出力結果としてデフォルト値を取得するのに苦労しています。

私は2つのテーブルを持っています:

Student_Input :

InputID SectionID  ParameterName    Sequence
------------------------------------------------     
  1     100        FirstName           1 
  2     100        MiddleName          2  
  3     100        LastName            3  

Student_Input_details :

ParameterName   ParameterValue      DefaultValue
-----------------------------------------------------     
FirstName          John                  1    
FirstName          Troy                  0
FirstName          Mark                  0  

ParameterNamefromStudent_Inputとそのデフォルト値 fromStudent_Input_Detailsを 1 つのテーブルの出力として呼び出そうとしています。次のクエリを試していますが、次のエラーが発生します。

メッセージ 201、レベル 16、状態 4、プロシージャ Getparameterdefaultvalues、行 0
プロシージャまたは関数 'Getparameterdefaultvalues' には、指定されていないパラメーター '@ParameterValue' が必要です。

ここで重要な何かが欠けていると確信しています。

私の質問は以下です。私は学んでいます。簡単な質問かもしれません。どうも........

CREATE PROCEDURE Getparameterdefaultvalues
(
    @ParameterName varchar(50) ,
    @ParameterValue varchar(50) OUT
)
AS
BEGIN
    SELECT @ParameterValue = DefaultValue FROM ParameterInput_Values
    WHERE ParameterName=@ParameterName 
END
DECLARE @ParameterValue varchar(50) 
EXEC Getparameterdefaultvalues @ParameterName = 1, @ParameterValue OUTPUT
PRINT 'Result is: ' + @ParameterValue

次のような結果が必要です(つまりParameterName、実行時にデフォルト値のみを表示する必要があります):

ParameterName   ParameterValue      
---------------------------------- 
FirstName         John

他のブログで試してみましたが、これを解決できませんでした。申し訳ありませんが、私の質問が明確でない場合。どんな助けでも素晴らしいでしょう!! どうも

4

1 に答える 1

7

非常に単純で簡単です。ストアド プロシージャは2つのパラメーター@ParameterNameを必要としますが、呼び出しは1 つ@ParameterValueしか提供しません...

次のようにストアド プロシージャを呼び出す必要があります。

DECLARE @ParameterValue varchar(50) 

EXEC Getparameterdefaultvalues @ParameterName = 1, @ParameterValue = @ParameterValue OUTPUT

PRINT 'Result is: ' + @ParameterValue

また、取得した値を出力パラメーターとして返しているため、単一の値を変数に戻しているため、結果セット (行/列) を取得していません。

于 2012-12-12T17:23:47.510 に答える