#sql-server #function #select #openquery
#sql-сервер #функция #выберите #openquery
Вопрос:
Мне очень сложно создать пользовательскую функцию, я хотел бы получить значение из openquery, мне нужно передать один параметр в эту функцию, я пытаюсь отладить это в редакторе, @catalog — мой передающий параметр
declare @val decimal(18, 3), @catalog varchar(50);
set @catalog = '08553101';
select @val = (STPRS/PEINH) from openquery([NEWDB], 'select STPRS, PEINH from DATA.CATALOGS where CATALOG = ''' @catalog ''' ')
return @val;
но появляется ошибка «Ошибка базы данных SQL Server: неправильный синтаксис рядом с ‘ ‘».
Не уверен, как создать Openquery.
Пожалуйста, посоветуйте. Заранее благодарю.
Комментарии:
1.
OPENQUERY()
не поддерживает выражение в качестве входных данных. Для вашего требования вам необходимо сделать весь запрос динамическим
Ответ №1:
Я бы последовал совету Эрланга Соммарскога в разделе 6.2 его статьи на http://www.sommarskog.se/dynamic_sql.html . Он не наносит ударов, когда дело доходит до предоставления огромного количества информации и важных деталей, которые в противном случае трудно найти или выяснить.
Комментарии:
1. Динамический SQL не помогает, поскольку exec sp_executesql нельзя использовать с return, и мне нужно создать пользовательскую функцию с его помощью.