Declare @OPENQUERY nvarchar(500), @TSQL nvarchar(max), @LinkedServer nvarchar(20), @PickedDate varchar(8)
Set @LinkedServer = 'LinkedServerName'
Set @OPENQUERY = 'Select * From Openquery('+ @LinkedServer + ','''
Set @TSQL = 'SELECT sum(iif(left(code,1)=''''C'''', 1, 0) As ActiveCases
From cases
Where cases.date_opened = ''''' + @vcPickedDate + '''''
'')'
Exec (@[email protected])
Когда я запустил этот запрос, он возвратил сообщениеИспользование функции IIF в OPENQUERY
"[Sybase] [ODBC Driver] [SQL Anywhere] Ошибка синтаксиса около '=' в строке 1". Произошла ошибка при подготовке запроса «SELECT Сумма (IIf (слева (код, 1) = 'C', 1,0)) AS Случаи из случаев WHERE cases.date_opened = '20150511'" для исполнения с OLE DB провайдер «MSDASQL» для связанного сервера «LinkedServerName».
Я полагал, что это имеет какое-то отношение к openquery. Он отлично работает, если я просто выполнить следующий запрос без использования OPENQUERY:
SELECT sum(iif(left(code,1)=''''C'''', 1, 0) As ActiveCases
From cases
Where cases.date_opened = ''''' + @vcPickedDate + '''''
Я думаю, что проблема связана с использованием одиночных кавычек. – Dai
Вы пытались использовать собственный клиент OLEDB-провайдера - MSDASQL является старым (SQLNCLI12)? – ErikEJ
Я должен использовать MSDASQL, поставщик OLEDB для драйверов ODBC. Но ваш комментарий помогает мне решить проблему. Спасибо Эрик. – Zerubbabel