Ich hatte ein Problem bei der Verwendung von Sequenz in For-Schleife zum Einfügen von Zeilen in Oracle-Tabelle, nach Durchlaufen einiger Blog, wenn die richtige Verwendung gefunden.Verwenden von Sequenz in FOR LOOP zum Einfügen von Zeilen in Oracle-Tabelle
Falsche Nutzung: - nur eine Zeile eingefügt, da es nicht
erhöhtDECLARE ASSET_CLAIM_STAGE_ID NUMBER := tblAssetClaimStage_ID_SEQ.NextVal;
BEGIN
FOR SI IN 1..STAGEID LOOP
INSERT INTO tblAssetClaimStage (assetClaimStageID, assetID, claimstageID, createDateTime)
SELECT ASSET_CLAIM_STAGE_ID, IN_ASSETID, SI, IN_SOLDDATE FROM DUAL WHERE NOT EXISTS (SELECT ASSETID
FROM tblAssetClaimStage
WHERE assetID = IN_ASSETID AND
claimstageID = SI);
END LOOP;
Gemäßer Gebrauch:
FOR SI IN 1..STAGEID LOOP
INSERT INTO tblAssetClaimStage (assetClaimStageID, assetID, claimstageID, createDateTime)
SELECT tblAssetClaimStage_ID_SEQ.NextVal, IN_ASSETID, SI, IN_SOLDDATE FROM DUAL WHERE NOT EXISTS (SELECT ASSETID
FROM tblAssetClaimStage
WHERE assetID = IN_ASSETID AND
claimstageID = SI);
END LOOP;
COMMIT;
Gibt es eine andere bessere Möglichkeit, dies zu tun?
Warum sollte eine Sequenz inkrementiert werden, wenn nicht in einer Schleife? 12c bietet Auto-Inkrement. Welche Version von Oracle ist das? – OldProgrammer
Oracle-Datenbank 11g Enterprise Edition Release 11.2.0.4.0, ich möchte die SEQ innerhalb der Schleife erhöhen – Vijai
Einfache Antwort: Nein. Welches Problem versuchen Sie genau zu lösen? –