1

この手順に問題があります。これがコードです

declare @sql nvarchar(4000)
set @sql =  N'SELECT @resp2 = count(*) from '+ @NameTable + ' where datum = ''1'' or datum = ''2''    '
    EXEC sp_executesql
    @query = @sql,
    @params = N'@resp2 INT OUTPUT', 
    @resp2 = @resp2 OUTPUT 

「プロシージャには、タイプ 'ntext/nchar/nvarchar' のパラメータ '@statement' が必要です。」

私は声明を出していませんか?(@SQL)

私がやりたいことは、実行時に @resp2 に値を設定することだけです。

4

2 に答える 2

5

マニュアルによると、というパラメータの値を指定する必要@statementがありますが、 として指定してい@queryます。

したがって、次のようになります。

declare @sql nvarchar(4000)
set @sql =  N'SELECT @resp2 = count(*) from '+ @NameTable + ' where datum = ''1'' or datum = ''2''    '
EXEC sp_executesql
@statement = @sql,
@params = N'@resp2 INT OUTPUT', 
@resp2 = @resp2 OUTPUT 

マニュアル通りにやれば大丈夫です。

于 2012-04-27T17:11:49.307 に答える
0

あなたのコードは、SQL2008 R2 で問題なく動作します。どのバージョンで実行していますか? 最後の行を次のように置き換えてみてください。

exec (@sql)
于 2012-04-27T10:56:53.620 に答える