Мне нужно получить данные с связанного сервера с помощью параметра @PickedDate, например. Запрос работает отлично, если я пропускаю @A и @B, но он всегда возвращает ошибку из-за отсутствия отдельной кавычки. Пожалуйста, посоветуйте, спасибо.Escape single quote в openquery с использованием динамического запроса
Запрос:
Declare @OPENQUERY nvarchar(500), @TSQL nvarchar(max), @LinkedServer nvarchar(20), @A varchar(5), @B varchar(5), @PickedDate varchar(8)
Set @PickedDate = '20150501'
Set @A = 'AAA'
Set @B = 'BBB'
Set @LinkedServer = 'LinkedServerName'
Set @OPENQUERY = 'Select * From Openquery('+ @LinkedServer + ','''
Set @TSQL = 'SELECT cases.casenum, user.username, code
From cases
Inner join user
On cases.casenum = user.user_id
Where cases.date_opened > DateAdd(day,1-datepart(dw,Convert(date,' + @PickedDate + ')), Convert(date,' + @PickedDate + '))
And cases.date_opened <= DateAdd(day,8-datepart(dw,Convert(date,' + @PickedDate + ')), Convert(date,' + @PickedDate + '))
And cases.code IN (' + @A +', ' + @B + ')
ORDER BY casenum'')'
Exec (@[email protected])
OLE DB провайдер "MSDASQL" для связанного сервера "LinkedServerName" возвращается сообщение "[Sybase] [ODBC Driver] [SQL Anywhere] Колонка 'AAA' не найден". Msg 7321, Level 16, состояние 2, строка 1 при подготовке запроса "
SELECT cases.casenum, username, code
From cases
Inner join user
On cases.casenum = user.user_id
Where cases.date_opened >
DateAdd(day,1-datepart(dw,Convert(date,20150501)), Convert(date,20150501))
And cases.date_opened <=
DateAdd(day,8-datepart(dw,Convert(date,20150501)), Convert(date,20150501))
And cases.code IN (AAA, BBB)
ORDER BY casenum"
для выполнения с OLE DB провайдера "MSDASQL" для связанного сервера "LinkedServerName" произошла ошибка.
как насчет А cases.code IN ('+ CHR (39) + @A +', '+ CHR (39) + @B + chr (39) + ') – xQbert
'char (39)' http://stackoverflow.com/questions/14657056/how-do-i-use-char39-in-a-sql-statement-where- пункт – xQbert
Он ведет себя так же, как ('' '+ @A +' '', '' '+ @B +' ''). Все еще дает «Неправильный синтаксис рядом с« AAA »». – Zerubbabel