Insert/Update in PL/SQL
Ich habe eine Prozedur in PL/SQL, die fügt Daten aus einer Tabelle in eine andere, die auf Grundlage der primär-Schlüssel. Meine Vorgehensweise ist in Ordnung, aber ich kann nicht herausfinden, wie werde ich die update-Spalte CODE_NUMBER meiner Tabelle HAUPT, wenn primary key bereits existiert.
Eigentlich will ich die Zeilen der Haupttabelle AKTUALISIERT, wenn seine hat einen primären Schlüssel, und fügen Sie Daten von REGIONEN, wenn primary key nicht vorhanden ist.
DECLARE
variable number;
id number;
description varchar2 (100);
CURSOR C1 IS
select regions.REGION_ID variable
from regions;
BEGIN
FOR R_C1 IN C1 LOOP
BEGIN
select regions.REGION_ID,regions.REGION_NAME
into id,description
from regions
where regions.REGION_ID = R_C1.variable;
----If exists then update otherwise insert
INSERT INTO MAIN( ID, CODE_NUMBER) VALUES( id,description);
dbms_output.put_line( id ||' '|| 'Already Exists');
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
dbms_output.put_line( R_C1.variable);
END;
END LOOP;
END;
InformationsquelleAutor Femme Fatale | 2012-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt keine Notwendigkeit, dies zu tun mit PL/SQL und Cursor. Was Sie wirklich wollen, zu tun ist, so etwas wie dieses:
Lesen Sie mehr über die
SQL-MERGE
Aussage in der DokumentationInformationsquelleAutor Lukas Eder
Kann ich nicht wirklich einen Sinn machen würde, ein cursor in diesem Fall. Warum kann man nicht einfach es so machen:
InformationsquelleAutor Arion