2014-04-10 2 views
0

sp_executesql을 배우고 사용하려고하는데이 단순한 SQL 문으로도 막혀 있습니다.sp_executesql 구문 오류

DECLARE @sql NVARCHAR(MAX) = NULL 
DECLARE @WHERE NVARCHAR(MAX) = NULL 

SET @sql = N' 
    SELECT 
     * 
    FROM 
     MyTable 
     @WHERE' 

SET @WHERE = ISNULL(' WHERE ' + @WHERE, ''); 

EXECUTE sp_executesql 
    @statement = @sql 
    , @params = N'@WHERE nvarchar(MAX)' 
    , @WHERE = @WHERE; 

나는 ...이 오류를 얻고있다 왜 알아낼 수

메시지 102, 수준 15, 상태 1, 줄 6
근처의 구문이 잘못

'@WHERE'.

답변

3

매개 변수로 where 절을 사용할 수 없습니다.

MVP Erland Sommarskog의 기사 섹션 this을 주제 및 일반 전체 기사에서 읽는 것이 좋습니다.

당신이 직접 SQL 문자열에 추가하여 그것이 좋은 생각이 아니다하더라도, 매개 변수없이이 작품을 만들 수

:

DECLARE @sql NVARCHAR(MAX) = NULL 
DECLARE @WHERE NVARCHAR(MAX) = NULL 

SET @sql = N'SELECT * FROM MyTable' + ISNULL(' WHERE ' + @WHERE, ''); 

EXECUTE sp_executesql @sql