2012-04-19 3 views
1

이 절차에 문제가 있습니다. 여기에 코드를입니다sp_executesql 문이 필요합니다 ... 음, 제공합니다

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 값을 설정하는 것입니다.

+0

나를 위해 잘 작동합니다. 확실히 올바른 코드 비트를보고 있습니까? –

+0

if의 코드로 모든 코드 조각을 분리하는데 10 분이 걸렸습니다. 문제가 여기에있는 것 같습니다. 게다가 다른 코드가 서버에서 보내는 오류를 생성 할 수는 없습니다. :/ –

+0

나를 위해 일한다. 나는 - 어떻게 든 - 원래 코드 @sql에서 nvarchar가 아니라 varchar라고 믿습니다. –

답변

5

the manual에 따르면, 당신은 @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 

그냥 설명서에 따라, 당신은 괜찮을 것이다.

0

코드가 SQL2008 R2에서 제대로 작동합니다. 어떤 버전을 실행하고 있습니까?

exec (@sql) 
관련 문제