Hi Chris,
meine frage kam daher das ich das script so bekommen habe und
ich hatte schon gesehen das das eigentlich so nicht läuft,
mich hat jetzt halt nur interessiert wie man das mit pl/sql
richtig vormuliert hätte.
Es geht natürlich auch mit PL/SQL, aber ich schreibe mir auch kein C-Programm, das einen „DIR“ macht…
Wenn’s denn unbedingt sein soll: Das Package deiner Wahl ist DBMS_SQL. Sieht dann in etwa so aus:
DECLARE my\_cursor INTEGER;
my\_returnvalue INTEGER;
BEGIN
my\_cursor := DBMS\_SQL.OPEN\_CURSOR;
DBMS\_SQL.PARSE(my\_cursor, 'ALTER ROLLBACK SEGMENT...', DBMS\_SQL.NATIVE);
my\_returnvalue := DBMS\_SQL.EXECUTE(my\_cursor);
END;
wie du das machst, mit diesem WHENEVER, ist mir noch nie über
den weg gelaufen, ich habe nur die orginal oracle
schulungsunterlagen und da steht das nicht mit drin…
WHENEVER ist ein Befehl von SQL*Plus und zumindest in der Doku von SQL*Plus sehr wohl erklärt (die gibt’s im Technet zum Download, wenn du sie nicht schon hast). Damit kannst du dem Ding sagen, was es bei einem Fehler tun soll (weitermachen, Programm beenden, dabei offene Transaktion abschliessen [commit] oder rückgängig machen [rollback]). Ist aber leider recht simpel gestrickt, du kannst also nicht bestimmte Fehler ignorieren und andere behandeln. Wenn du das machen willst brauchst du in der Tat einen PL/SQL Block (anonym oder als Prozedur, Funktion, Package,…).
Gruss
Martin