【发布时间】:2020-05-16 01:48:06
【问题描述】:
我正在阅读这篇Click 的帖子,我意识到我们不能在SELECT / WHERE / HAVING 语句/子句中使用存储过程,但是我们可以在 UDF 中使用它们,那么为什么这个存储过程可以工作并返回数据?
我正在使用 select 并在此存储过程中使用:
create proc person_sp (@id int)
as
begin
select id, [name], lastname
from person
group by id, [name], lastname
having sum(id) > 3
end
然后我打了电话
exec person_sp 1
【问题讨论】:
-
您不能调用存储过程 from SELECT 查询。例如
select * from person_sp 1是非法的。但是您可以从 SELECT 查询中调用 UDF,例如select * from personfunction(1) p -
您不能在查询中调用 SP,但您可以在 SP 中发出任何查询(注意颠倒的术语)。这就是问题所在吗?
-
“我正在使用 select 并在这个 sp 中拥有?”这是一个问题???如果是,那么实际的问题是什么?
-
@Eric 我的意思是如果我们不能在 Sp 中使用 SELECT/WHERE/HAVING 语句,那么为什么在我的代码中我可以使用 have 而我没有收到错误?
-
谁说你不能在 sp 中使用 SELECT/WHERE/HAVING?
标签: sql-server stored-procedures