我需要在查询语句中执行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中的select无法在其他地方完成,因为它取决于外部查询。
这是什么正确的语法?
答案 0 :(得分:1)
我认为这会给你所需要的东西。
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)