Ошибка SSRS должна объявлять скалярную переменную при использовании подключения ODBC к SQL SERVER.

У меня есть запрос набора данных SSRS с параметром с одним значением, называемым BENEFIT. Моим источником данных является SQL SERVER 2014: следующий запрос выдает ошибку «ОШИБКА [42000] [Microsoft] [SQL Server Native Client 10.0] [SQL Server] должен объявить скалярную переменную «@BENEFIT».

SELECT  c.BENEFIT  FROM  CLAIM AS c
WHERE c.DOWNLOAD_DATE > '20150701' AND c.BENEFIT = (@ BENEFIT)

Ошибка возникает ТОЛЬКО при использовании подключения ODBC и исчезает при прямом подключении. Без параметра запрос анализируется правильно при использовании любого метода подключения.

Любые мысли оценены.

Спасибо, Аласдер.


person Holdfast4    schedule 26.08.2015    source источник


Ответы (2)


ODBC не поддерживает именованные параметры, поэтому попробуйте изменить имя параметра на ?:

SELECT c.BENEFIT FROM CLAIM AS c WHERE c.DOWNLOAD_DATE > '20150701' AND c.BENEFIT = ?

Дополнительная информация здесь: https://msdn.microsoft.com/en-us/library/yy6y35y8(v=vs.90).aspx

Обратите внимание на раздел «Использование параметров с OleDbCommand или OdbcCommand».

person PicoDeGallo    schedule 26.08.2015
comment
Привет, iDrian. Это запрос набора данных SSRS. Я обновил свой текст, чтобы быть более понятным! - person Holdfast4; 26.08.2015
comment
@ Holdfast4 Я понимаю, но мой ответ остается в силе. Соединения ODBC из ЛЮБОГО источника не поддерживают именованные параметры. Пожалуйста, попробуйте то, что я рекомендовал выше. - person PicoDeGallo; 26.08.2015
comment
Спасибо, это работает. Я буду избегать ODBC. Отчеты Interstingly Crystal будут анализировать и заменять именованные параметры в командном объекте (наборе данных). Кажется, что SSRS менее развит в этом отношении. - person Holdfast4; 27.08.2015

SET NOCOUNT ON перед запросом, а затем SET NOCOUNT OFF после запроса, если вы объявляете переменную в запросе. Если переменная объявлена ​​вне запроса, используйте ?, как заявил PicoDeGallo.

person RSDEE    schedule 04.11.2015
comment
Не работает. Вы не можете обойти ограничения драйвера ODBC. Ничего общего с кодом или запросом - person Fandango68; 04.07.2018