我有這樣的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