我宣佈一個臨時表來保存所有需要的值如下:遍歷一個臨時表中的所有行和調用存儲過程的每一行
DECLARE @temp TABLE
(
Password int,
IdTran int,
Kind varchar(16)
)
INSERT INTO @temp
SELECT s.Password, s.IdTran, 'test'
from signal s inner join vefify v
on s.Password = v.Password
and s.IdTran = v.IdTran
and v.type = 'DEV'
where s.[Type] = 'start'
AND NOT EXISTS (SELECT * FROM signal s2
WHERE s.Password = s2.Password
and s.IdTran = s2.IdTran
and s2.[Type] = 'progress')
INSERT INTO @temp
SELECT s.Password, s.IdTran, 'test'
from signal s inner join vefify v
on s.Password = v.Password
and s.IdTran = v.IdTran
and v.type = 'PROD'
where s.[Type] = 'progress'
AND NOT EXISTS (SELECT * FROM signal s2
WHERE s.Password = s2.Password
and s.IdTran = s2.IdTran
and s2.[Type] = 'finish')
現在我需要通過行循環在@temp表中,並且對於每一行調用一個將@temp表的所有參數作爲輸入的sp。 我該如何做到這一點?
您的proc是否爲@temp表中的每個值返回多個或單個行。如果proc只返回單行/值,我會condider重寫這個來調用函數。這樣,您可以在不使用'cursors' ='CURSES'或'LOOPS'的情況下執行表中的每個值。 SQL旨在執行基於集合的處理而不是循環。社區中的大多數人會避免使用'cursors'做的所有事情,它真的是一個'詛咒' – 2014-03-24 19:49:06