Ich habe eine Prozedur, in TOAD, die einen neuen Datensatz nach Überprüfung des Datensatzes einfügen soll existiert nicht. Es schafft erfolgreich:Oracle PL/SQL-Prozedur führt nicht einfügen
CREATE OR REPLACE PROCEDURE Set_Mod (
p_TypeID IN NUMBER, p_LinkID IN NUMBER
)
AS
v_isExists NUMBER := 0;
v_query varchar2(200);
BEGIN
SELECT TypeID
INTO v_isExists
FROM myTable
WHERE LinkID = p_LinkID
AND TypeID = p_TypeID;
IF (v_isExists = 0) THEN
v_query := 'INSERT INTO myTable (TypeID, LinkID) VALUES (' || p_TypeID || ',' || p_LinkID || ')';
EXECUTE IMMEDIATE v_query;
END IF;
END;
/
Ich versuche, das Verfahren mit diesem Block ausgeführt:
BEGIN
Set_Mod(1, 1);
END;
/
ich diese Skript-Ausgänge in TOAD erhalten:
Procedure created.
PL/SQL procedure successfully completed.
, aber keine alle Einfügungen. Es funktioniert nicht. Irgendwelche Ideen wo ist das Problem?
Es sieht Lüge Ihr Ziel ist, herauszufinden, ob ein Datensatz bereits existiert, dann fügen Sie eine Zeile nur ein, wenn eine nicht existiert. Lesen Sie die folgende Antwort, um zu beheben, was falsch ist, aber ziehen Sie auch einen UNIQUE-Kombinationsschlüssel-Index für die beiden Spalten in Betracht, damit Sie niemals zwei Zeilen mit den gleichen TypeID-Werten für die Verknüpfungs-ID eingeben können. - Dann können Sie die Duplizierungsausnahme abfangen und vielleicht eine Aktualisierung anstelle einer Einfügung vornehmen? – JasonInVegas