Zuerst muss ich eine Liste von IDs mit einer Bedingung abrufen, sagen wir
SELECT Id
FROM TABLE1
WHERE Validity = 'Date' AND ExpiryDate < GETDATE();
Hier muss ich eine Liste von IDs als String-Beispiel 1,2,3 oder 44,56,67,77 usw. Führen
Dann muss ich eine Update-Abfrage ausführen
UPDATE TABLE1
SET Status = 'Expired'
WHERE Validity = 'Date' AND ExpiryDate < GETDATE();
Hier muss ich die Aufzeichnung betroffen halten
Dann muss ich eine Einfügeabfrage durchführen, bei der ich die Liste der IDs und die Anzahl der von der UPDATE-Abfrage betroffenen Datensätze verwenden und in eine neue Tabelle einfügen muss
INSERT INTO LicenseExpiryJobLog (Descr)
VALUES ('Detected IDs= { here comma seperated ids} Total rows updated = ');
Wie kann ich die 2 Variablen in der endgültigen Einfügung in SQL Server erhalten?
Sie können dies auf viele Arten tun, aber hier ist meine einfache Version.
DECLARE @IDs VARCHAR(MAX)
DECLARE @ROW_COUNT INT
DECLARE @STR_LOG VARCHAR(MAX)
SELECT @IDs = COALESCE(@IDs + ', ', '') + Id FROM TABLE1 WHERE Validity='Date' AND ExpiryDate < GETDATE();
UPDATE TABLE1 SET Status=Éxpired WHERE Validity='Date' AND ExpiryDate < GETDATE();
SELECT @ROW_COUNT = @@ROWCOUNT
SET @STR_LOG = 'Detected IDs= ' + @IDs + ' Total rows updated = ' + CAST(@ROW_COUNT AS VARCHAR(5)) + ''
INSERT INTO LicenseExpiryJobLog (Descr) VALUES (@STR_LOG);
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen