Wie speichere ich einen ausgewählten Feldwert in einer Variablen aus einer Abfrage und verwende ihn in einer Aktualisierungsanweisung?
Hier ist meine Vorgehensweise:
Ich schreibe eine gespeicherte SQL Server 2005 T-SQL-Prozedur, die Folgendes ausführt:
- Ruft eine Liste der Rechnungs-IDs aus der Rechnungstabelle ab und speichert sie im Cursor
- Abrufen der Rechnungs-ID vom Cursor -> Variable tmp_key
- foreach tmp_key findet die primäre Kontakt-ID des Rechnungsclients aus der Kundentabelle
- Aktualisiert den Client-Kontaktschlüssel mit der primären Kontakt-ID
- Cursor schließen
Hier ist mein Code:
DECLARE @tmp_key int
DECLARE @get_invckey cursor
set @get_invckey = CURSOR FOR
select invckey from tarinvoice where confirmtocntctkey is null and tranno like '%115876'
OPEN @get_invckey
FETCH NEXT FROM @get_invckey into @tmp_key
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT c.PrimaryCntctKey as PrimaryContactKey
from tarcustomer c, tarinvoice i
where i.custkey = c.custkey and i.invckey = @tmp_key
UPDATE tarinvoice set confirmtocntctkey = PrimaryContactKey where invckey = @tmp_key
FETCH NEXT FROM @get_invckey INTO @tmp_key
END
CLOSE @get_invckey
DEALLOCATE @get_invckey
Wie speichere ich den PrimaryContactKey und verwende ihn erneut in der set-Klausel der folgenden Update-Anweisung? Erstelle ich eine Cursor-Variable oder nur eine andere lokale Variable mit einem int-Typ?