我有这样的select语句如何遍历存储过程记录集?
declare @t table (Percentage float)
DECLARE @acc INT
SET @acc = 1
DECLARE @max INT
select @max = max(HireID) from NewHire
WHILE (@acc <= @max)
BEGIN
IF (@acc in (select HireID from NewHire))
BEGIN try
insert into @t
select
CAST((select COUNT(*) from Hire_Response WHERE HireID = @acc AND (HireResponse = 0 OR HireResponse = 1)) as FLOAT)/
CAST((select COUNT(*) from Hire_Response WHERE HireID = @acc) as FLOAT)
END try
begin catch
insert into @t
select 0.0
end catch
set @acc = @acc + 1
END
select * from @t
在这段代码中,我被它的ID通过所有的NewHire记录循环,从1到最高的国家之一。我意识到这不是我想要做的。现在基本上我有这个名为sp_selectNewHire2SQL
的存储过程,它以特定的方式获取NewHire表。我想调用它,并获取它的返回记录集,然后从上到下循环。
注意:做来自ID循环来最高不会工作了,因为编号的顺序可以混合起来。
有没有办法做到这一点?
谢谢。
不,这是如何工作的? – omega 2013-05-14 15:09:08
你不想循环,你需要停止思考它的循环条件,这不是你处理数据库代码的方式。你需要考虑数据集。循环是最后的手段,从来没有第一个,因为它是缓慢和低效的。 – HLGEM 2013-05-14 15:09:19
请勿在任何情况下使用游标!!!!!!!!! – HLGEM 2013-05-14 15:09:46