2014-11-13 4 views
0

sp_executesql에서 IN opeartor를 사용하려고하지만 잘못된 구문 인 '@TagIndexListToAdjust'근처의 오류가 발생합니다.sp_executesql에서 쉼표로 구분 된 목록을 전달하는 방법

이 오류는 매개 변수 값 '(1,2,3)'의 양쪽에 작은 따옴표가 있기 때문에 발생합니다.

이 쿼리는 C# 모델 클래스에서 생성되므로 sp_executesql과 같이 수정해야합니다.

USE [master] 
    GO 
    IF EXISTS (SELECT * 
       FROM sys.objects 
       WHERE object_id = OBJECT_ID(N'[dbo].[Persons]') AND type in (N'U')) 
    DROP TABLE [dbo].Persons 
    GO 
    USE [master] 
    GO 
    CREATE TABLE Persons 
    (
      commaList nvarchar(MAX), 
    ); 
    insert into Persons values ('1') 
    insert into Persons values ('2') 
    insert into Persons values ('3') 

    GO 

    exec sp_executesql N' 

    Select * 
    from Persons 
    where commaList in @TagIndexListToAdjust', 
      N'@TagIndexListToAdjust varchar(67)', 
      @TagIndexListToAdjust='(1,2,3)' 

오류 해결에 도움이 될 것입니다.

답변

0

두 개의 따옴표를 사용하십시오. 하나는 다른 하나를 이스케이프 처리하기위한 것입니다.

관련 문제