Пользовательская функция MSSQL, OPENQUERY, динамический sql

#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, и мне нужно создать пользовательскую функцию с его помощью.