问题描述
我有一个可以正常工作的 select 语句,但我还需要一个来自存储过程的值,我不能在 select 语句中将其作为值调用
select
recp.percent,(call libraryEXT.get_rate_for_detail(detail_number))
from
mainTable.orders ORD
inner join
mainTable.receipts recp on ORD.rcptID = recp.rcptID
仅获取 recp.percent 效果很好,但是将下一个值放入调用存储过程中表示它不期望“调用”
如果我自己运行存储过程,它会返回一个包含以下列的记录:name,rcptID,time
并且我需要来自该列的 rcptID
如何正确调用存储过程并使返回的值成为我在 select 语句中的另一个值?
解决方法
正如@mao 所说,这不可能在 select 语句中调用 SP。
如果您是 SP 所有者,请尝试创建一个表函数。这个可以在 select 语句中调用。
,鉴于您使用 CALL libraryEXT.get_rate_for_detail(detail_number)
的方式,它显然只返回一个值。
既然如此,将其作为缩放器用户定义函数 (UDF) 会更好地为您服务。
这就是你的代码的样子:
select
recp.percent,libraryEXT.get_rate_for_detail_UDF(detail_number) as rate
from
mainTable.orders ORD
inner join
mainTable.receipts recp on ORD.rcptID = recp.rcptID
我重命名了函数只是为了清楚它不是存储过程。如果您创建了存储过程,您可以删除它并为 UDF 使用相同的名称。