Передача результата запроса в качестве параметра в UDF - PullRequest
1 голос
/ 12 февраля 2011

Мне нужно выполнить UDF внутри оператора запроса, и его параметр зависит от текущей строки в большем запросе. Мне нужно получить скаляр из другой таблицы и передать его в UDF, однако я получаю синтаксические ошибки, если пытаюсь использовать запрос в параметрах UDF.
Пример:

SELECT M.Col1 
FROM MyTable M 
WHERE M.RemoteID = UDFLookupRemoteID(SELECT W.Name 
                               FROM WidgetNames W 
                               WHERE W.Col2 = M.RemoteID)

Выбор в UDF не может быть выполнен где-либо еще, поскольку он зависит от внешнего запроса.

Какой правильный синтаксис для этого?

1 Ответ

1 голос
/ 12 февраля 2011

Я думаю, что это даст вам то, что вам нужно.

SELECT m.col1 
FROM   mytable m 
       INNER JOIN widgetnames w 
         ON w.col2 = m.remoteid 
WHERE  m.remoteid = Udflookupremoteid(w.name) 

Вот пример, который я протестировал с базой данных AdventureWorks

SELECT pr.* 
FROM   production.productreview pr 
       INNER JOIN production.product p 
         ON p.productid = pr.productid 
WHERE  pr.rating < dbo.Ufngetstock(p.productid)     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...