Hallo zusammen,
Der folgende Block (siehe unten) ist Bestandteil eines Skriptes, das einen Fehler werfen soll, wenn in einem bestimmten Schema nicht alle Objekte gelöscht werden konnten.
Zusätzlich sollen die Objekte auf die Konsole ausgegeben werden. Die Ausgabe funktioniert so lange, wie ich keinen Application Error werfe. Kommentiere ich den Block ein, wirft Oracle nur den Fehler und schreibt die dbms_output Ausgaben nicht mehr raus.
In eine Datei will ich nicht schreiben, weil dann das ganze Rahmenskript angepasst werden müsste.
Hat jemand ne Idee, warum sich Oracle so seltsam verhält.
Vielen Dank
Mark
DECLARE
lv_anz_fehler number := 0;
Cursor lc_nicht_geloescht_objekte is
Select a.OBJECT_NAME , a.OBJECT_TYPE
from all_objects a
where a.OWNER = 'TEST_STAGE'
and a.OBJECT_TYPE in ('PACKAGE','TABLE', 'PROCEDURE', 'FUNCTION', 'DIRECTORY' )
and a.OBJECT_NAME not in ('WB_RT_VERSION_FLAG', 'WMP_API_CALL', 'VBZ$CHECKPOINT_SID_9I', 'TOAD_PLAN_TABLE')
order by a.OBJECT_TYPE, a.OBJECT_NAME ;
BEGIN
for lr_nicht_geloescht_objekte in lc_nicht_geloescht_objekte
loop
dbms_output.put_line ('v_anz_fehler: '||lv_anz_fehler);
if lv_anz_fehler = 0 then
dbms_output.put_line ('************************************************ **********************');
dbms_output.put_line ('Folgende Objekte konnten nicht automatisch aus der DB entfernt werden.');
dbms_output.put_line ('Bitte manuell loeschen und dann das Skript mit dem naechsten Schritt ');
dbms_output.put_line ('fortsetzen. ');
dbms_output.put_line (' ');
end if;
lv_anz_fehler := lv_anz_fehler +1;
dbms_output.put_line (lr_nicht_geloescht_objekte.OBJECT_NAME ||' ('|| lr_nicht_geloescht_objekte.OBJECT_TYPE ||')');
end loop;
dbms_output.put_line ('************************************************ **********************');
if lv_anz_fehler > 0 then
raise_application_error (-20001, 'Fehler beim Loeschen in Stage');
end if;
END;
/
Der folgende Block (siehe unten) ist Bestandteil eines Skriptes, das einen Fehler werfen soll, wenn in einem bestimmten Schema nicht alle Objekte gelöscht werden konnten.
Zusätzlich sollen die Objekte auf die Konsole ausgegeben werden. Die Ausgabe funktioniert so lange, wie ich keinen Application Error werfe. Kommentiere ich den Block ein, wirft Oracle nur den Fehler und schreibt die dbms_output Ausgaben nicht mehr raus.
In eine Datei will ich nicht schreiben, weil dann das ganze Rahmenskript angepasst werden müsste.
Hat jemand ne Idee, warum sich Oracle so seltsam verhält.
Vielen Dank
Mark
DECLARE
lv_anz_fehler number := 0;
Cursor lc_nicht_geloescht_objekte is
Select a.OBJECT_NAME , a.OBJECT_TYPE
from all_objects a
where a.OWNER = 'TEST_STAGE'
and a.OBJECT_TYPE in ('PACKAGE','TABLE', 'PROCEDURE', 'FUNCTION', 'DIRECTORY' )
and a.OBJECT_NAME not in ('WB_RT_VERSION_FLAG', 'WMP_API_CALL', 'VBZ$CHECKPOINT_SID_9I', 'TOAD_PLAN_TABLE')
order by a.OBJECT_TYPE, a.OBJECT_NAME ;
BEGIN
for lr_nicht_geloescht_objekte in lc_nicht_geloescht_objekte
loop
dbms_output.put_line ('v_anz_fehler: '||lv_anz_fehler);
if lv_anz_fehler = 0 then
dbms_output.put_line ('************************************************ **********************');
dbms_output.put_line ('Folgende Objekte konnten nicht automatisch aus der DB entfernt werden.');
dbms_output.put_line ('Bitte manuell loeschen und dann das Skript mit dem naechsten Schritt ');
dbms_output.put_line ('fortsetzen. ');
dbms_output.put_line (' ');
end if;
lv_anz_fehler := lv_anz_fehler +1;
dbms_output.put_line (lr_nicht_geloescht_objekte.OBJECT_NAME ||' ('|| lr_nicht_geloescht_objekte.OBJECT_TYPE ||')');
end loop;
dbms_output.put_line ('************************************************ **********************');
if lv_anz_fehler > 0 then
raise_application_error (-20001, 'Fehler beim Loeschen in Stage');
end if;
END;
/
Comment