ich eine temporäre Tabelle erklärt haben, alle erforderlichen Werte zu halten, wie folgt:Schleife durch alle Zeilen einer temporären Tabelle für jede Zeile eine gespeicherte Prozedur und rufen
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')
Jetzt muss ich die Zeilen in einer Schleife durch in der @ temp-Tabelle und für jede Zeile einen sp aufrufen, der alle Parameter der @ temp-Tabelle als Eingabe akzeptiert. Wie kann ich das erreichen?
Liefert Ihr Prozess mehrere oder einzelne Zeilen für jeden Wert in der @temp-Tabelle. Wenn proc nur eine einzelne Zeile/Wert zurückgibt, würde ich dies in die Aufruffunktion umschreiben. Auf diese Weise können Sie für jeden Wert in der Tabelle ohne 'cursors' =' CURSES' oder 'LOOPS' ausführen. SQL soll satzbasierte Verarbeitung, nicht Schleifen, durchführen. Die meisten Leute in der Gemeinschaft werden alles vermeiden, was mit 'cursors' zu tun ist, es ist wirklich ein' Fluch' –