1

SQL Server 2008を使用していて@sqlFinal、タイプが。の変数がありますVarchar(500)

ストアドプロシージャの実行時に変数を入力します。結果を表示するために文字列の内容を動的に返したい

SELECT @sqlFinal = 'SELECT @Error_Return AS Final_Report'
--PRINT @sqlFinal
EXEC (@sqlFinal)

しかし、次のエラーが発生します

メッセージ137、レベル15、状態2、行1
スカラー変数「@Error_Return」を宣言する必要があります。

4

2 に答える 2

4

@Error_Returnは@SqlFinalと同じスコープにあると思いますか?

@Error_Returnの内容を返す必要がある場合は、次の行を実行できます。

SELECT @Error_Return as Final_Report

...動的なSQL行ではなく静的なSQL行にします。

ただし、それが受け入れられない場合は、代わりにsp_executeSQLを使用する必要があります。これにより、実行している行に変数を渡すことができます。

Declare @Error_Return VARCHAR(10)
Set @Error_return= 'Whatever'

exec sp_executesql N'SELECT @Error_Return as Final_Report', N'@Error_Return varchar(10)', @Error_Return
于 2012-12-03T20:06:58.500 に答える
1

このEXEC()関数は、新しい実行スコープを作成します。現在のスコープで定義されている@Error_Returnなどの変数は、Exec()関数では使用できません。代わりにsp_executesqlを調べてください。

于 2012-12-03T20:12:41.660 に答える