Auch der Java-Entwickler muß manchmal zum PL/SQL-Script greifen wenn er z.B. seine Daten initial in die Datenbank laden möchte. Gute Praxis ist dabei natürlich die Möglichkeit ein Datenbank-Script auch mehrmals laufen zu lassen, ohne das dabei die Daten doppelt geladen werden. Als praxistauglich hat sich bei mir die Methode erwiesen dabei erst ein select auf den einzufügenden Datensatz zu machen und dabei die Exception “NO_DATA_FOUND” abzufangen und dort schließlich das insert auszuführen.
Das sieht dann z.B. so aus:
declare
v_id number;
begin
----------------------------------------------------------------
-- insert new record
----------------------------------------------------------------
v_id := 159;
begin
select t.id
into v_id
from myTable t
where t.id = v_id;
dbms_output.put_line('existing record ... ' || v_id);
exception
when NO_DATA_FOUND then
insert into myTable
(id,
description)
values
(v_id,
'test');
dbms_output.put_line('inserting record ... ' || v_id);
end;
end;
In diesem Beispiel wird dabei nur auf den Primärschlüssel geprüft. In der Praxis ergeben sich meist bessere Möglichkeiten einen Datensatz zu identifizieren und seine Existenz festzustellen.