Das wäre ein anonymer Block, der in einen Tabelle ein INSERT vornimmt und dir als Ouputvariable ein PseudoLog und die Anzahl der Fehler meldet (hier kann es ja nur max einer sein).
SQL-Code:
Declare
RowsProcessed Number(6);
Begin
:o_Log :=
Null;
:o_ErrCount := 0;
-- Hier beginn ein Unterblock
Begin
:o_Log := :o_Log || chr(10) || '
Test_Tab1 (INSERT):';
Insert INTO Sheme0815.Test_Tab1 t
(t.
Text)
VALUES
(:i_NewText);
-- da INSERTs implizierte cursor öffnen bekommst du mit...
RowsProcessed :=
Sql%
Rowcount;
-- die Anzahl der Einträge die eingefügt/gelöscht/geändert wurden
:o_Log := :o_Log || chr(10) || '
' || RowsProcessed ||
'
record(s) inserted...';
-- Exception handling des Unterblock
Exception
When Others
Then
RowsProcessed := 0;
:o_Log := :o_Log || chr(10) ||
--
'
' || Replace(Sqlerrm, chr(10), chr(10) || '
');
:o_ErrCount := :o_ErrCount + 1;
/* Das formatiert die Fehlermeldungen á la:
Test_Tab1 (INSERT):
ORA-01722: invalid number
*/
-- Ende des Unterblock
End;
:o_Log := SubSTR(:o_Log, 2);
End;