1

以下のコードの一部を見つけたストアドプロシージャを確認していました。コードを見ると、@ QuestionIncludeという名前の変数を作成し、その値を動的SQLステートメントで渡していることがわかります。しかし、このコードはどのように機能していますか?

これは私にとっては戦略的で新しいものです。

declare @QuestionInclude varchar(10)
select @sqln =  'select @QuestionInclude = 1 from ##Stg_Prelim' 
exec sp_executesql @sqln,N'@QuestionInclude varchar(10) output',@QuestionInclude output
4

1 に答える 1

0

これはあなたを助けるかもしれません

http://msdn.microsoft.com/en-us/library/ms188001.aspx

プロシージャには、実行する実際のステートメントであるsp_executesqlパラメーターがあります。-パラメーターの宣言、および宣言されたすべてのパラメーター@stmt@params@params

パラメータを名前で渡す方が良い

declare @QuestionInclude varchar(10), @stmt nvarchar(max), @params nvarchar(max)

select @stmt = 'select @QuestionInclude = 1 from ##Stg_Prelim'
select @params = '@QuestionInclude varchar(10) output'

exec sp_executesql
    @stmt = @stmt,
    @params = @params,
    @QuestionInclude = @QuestionInclude output
于 2012-11-07T11:26:13.287 に答える