使用存储过程的结果作为 SELECT 语句中的列[重复]
Posted
技术标签:
【中文标题】使用存储过程的结果作为 SELECT 语句中的列[重复]【英文标题】:Use the result of Stored Procedure as column in SELECT statement [duplicate] 【发布时间】:2018-10-08 07:25:17 【问题描述】:我有一个示例存储过程:
dbo.spSampleProcedure
@ID INT,
@Country VARCHAR(50)
此 SP 将返回一个 MONEY 值(仅限 1 列)。
现在我想这样实现:
SELECT
c.ID,
Amount = EXEC spSampleProcedure @ID = c.ID, @Country = c.Country
FROM Customer c
这可能吗?
【问题讨论】:
你试过了吗? 你要找的是user defined function
@PeterSmith 令人惊讶的是,它不起作用:(
@AsRa 你的意思是把 sp 转换成函数吗?
见here
【参考方案1】:
您应该考虑不使用 sp_ 作为前缀来命名您的存储过程。那是系统保留的前缀,它可能会导致性能问题。您可以在 Aaron Bertrand 的 this article 上阅读更多相关信息。
为了满足您的需求,您可以首先创建一个用户定义的函数(如 cmets 中所提到的),该函数将执行以下操作:
create function myfunc(@Id int, @Country varchar(50))
returns money
as
begin
declare @amount money
select @amount = amount
from Customer
where Id = @Id and Country = @Country
return @amount
end
只有这样你才能尝试你想做的事情:
select c.id,
amount = dbo.myfunc (c.id, c.country)
from customer c
【讨论】:
谢谢!现在我知道存储过程方式是不可能的,因为我想使用 SP 进行维护和重用。以上是关于使用存储过程的结果作为 SELECT 语句中的列[重复]的主要内容,如果未能解决你的问题,请参考以下文章
phpMyAdmin - SELECT 语句在存储过程中的结果未显示