2014-11-13 2 views
0

Я хочу использовать IN opeartor в sp_executesql, но перед ошибкой, что неверный синтаксис рядом с '@TagIndexListToAdjust'.Как передать список, разделенный запятой, в sp_executesql

Эта ошибка возникает из-за одинарных кавычек с обеих сторон значения параметра '(1,2,3)'.

Мне нужно исправить это только с помощью sp_executesql, так как этот запрос генерируется классом модели C#.

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

Используйте 2 кавычки .. один для выхода из другого.

Смежные вопросы