我如何使用每行中的列值作为参数来调用函数?

问题描述 投票:0回答:1

我正在存储过程中使用以下select语句从表中获取数据,并且该函数具有为其中一列返回JSON的功能。我在查询中做错了什么?

函数GetRecordComments需要两个参数,第一个是每行的RecordID。但是,当我使用此查询时,出现以下错误。如何调用将recordID作为参数传递给每一行的函数?

查询:

SELECT 
    RercordID, Name, Region, 
    dbo.GetRecordComments((SELECT RecordID 
                           FROM RecordList  
                           WHERE RecordID = a.RecordID), 1),
    [Address],
    dbo.GetRecordComments((SELECT RecordID 
                           FROM RecordList  
                           WHERE RecordID = a.RecordID), 2)
FROM 
    RecordList AS a

错误:

子查询返回了多个值。当子查询遵循=,!=,,> =或将子查询用作表达式时,不允许这样做。

sql sql-server
1个回答
0
投票
SELECT rl.RecordID, rl.Name, rl.Region, dbo.GetRecordComments(rl.RecordID, 1), rl.Address, dbo.GetRecordComments(rl.RecordID, 2) FROM RecordList rl;

您应该知道,此类用户定义的函数通常是性能杀手。我的猜测是您有一个注释表。通常最好使用显式JOIN

© www.soinside.com 2019 - 2024. All rights reserved.