如何以T-SQL语法包含存储过程?
select * from CITY_TABLE C where
COUNT_PEOPLE_PROCEDURE(C.ID) > 3
答案 0 :(得分:3)
您不能将存储过程包含在此类查询中。
相反,你可以制作标量函数
create function COUNT_PEOPLE_FUNCTION
(
@ID int
)
returns int
as
begin
declare @Result int
<... your code here ...>
return @Result
end
然后
select * from CITY_TABLE C where COUNT_PEOPLE_FUNCTION(C.ID) > 3
但实际上,它可能会减慢您的查询速度,因为将为每一行独立调用标量函数。
答案 1 :(得分:1)
根据你的评论,如果你需要获得只有n次发生的记录,你可以使用这样的子查询:
SELECT * FROM CITY_TABLE WHERE IDPerson IN (
SELECT IDPerson FROM CITY_TABLE GROUP BY IDPerson HAVING COUNT(*) > 3
)
显然我不知道确切的列名,但这就是主意。
答案 2 :(得分:0)
正如其他人已经说过你不能使用这样的存储过程,我建议你尽可能使用一个函数; 如果你不能使用一个功能(即使你可以)我建议你这个页面作为一个有用的阅读: