【发布时间】:2014-05-02 08:59:05
【问题描述】:
我已经声明了一个临时表来保存所有必需的值,如下所示:
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 只返回单行/值,我会考虑将其重写为调用函数。这样您就可以在没有
cursors=CURSES或LOOPS的情况下对表中的每个值执行。 SQL 旨在进行基于集合的处理而不是循环。社区中的大多数人都会避免与cursors相关的所有事情,这真的是curse
标签: sql sql-server stored-procedures foreach