将requery的结果作为参数传递给UDF

时间:2011-02-11 22:16:09

标签: sql tsql

我需要在查询语句中执行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无法在其他地方完成,因为它取决于外部查询。

这是什么正确的语法?

1 个答案:

答案 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)