1.25.2008

TOAD-Fehler bei Varchar2

TOAD-Version: 8.0.0.47

Im TOAD-Debugger tritt ein Fehler (undeclared identifier) auf, wenn eine Varchar2-Variable mehr als 999 Zeichen enthält und man diese direkt oder mit Watches beobachtet.

Der Code läuft völlig problemlos solange man die Variablen nicht beobachtet.

Eine Lösung zu diesem Problem habe ich noch nicht gefunden.

Benutzerdefinierter Fehler beendet Ausführung und gibt dennoch Meldung aus

Die Anweisung

raise_application_error (-20002, 'do_mcontract2baan - Kein Kundencursor geöffnet!');

erzeugt eine Fehlermeldung. Der Code wird dann nach dieser Meldung fortgesetzt.

Verwendet man

EXCEPTION WHEN others
THEN

so wird zwar die Bearbeitung beendet, aber leider auch die Meldung geschluckt.

Die Lösung:

Es wird ein eigener Fehler im PACKAGE definiert:

Fehler_Als_Meldung EXCEPTION;

und diesem dann die gewünschte Fehlernummer zugewiesen:

PRAGMA EXCEPTION_INIT (Fehler_Als_Meldung, -20002);

und eine Behandlungroutine wie folgt implementiert:

EXCEPTIONWHEN fehler_als_meldung
THEN
raise_application_error (-20003, SQLERRM);

Und schon wird die Ausführung des Code unterbrochen und die Meldung ausgegeben!

1.11.2008

n Werte in einer Spalte verknüpft

Immer wieder möchte man die Werte eines Feldes aus n Datensätzen in einem Feld wiederbekommen.
Hier die Function dafür:


Und hier weniger schön formatiert zum rauskopieren:
CREATE OR REPLACE FUNCTION rowconcat(q in VARCHAR2) RETURN VARCHAR2 IS
ret VARCHAR2(4000);
hold VARCHAR2(4000);
cur sys_refcursor;
BEGIN
OPEN cur FOR q;
LOOP
FETCH cur INTO hold;
EXIT WHEN cur%NOTFOUND;
IF ret IS NULL THEN
ret := hold;
ELSE
ret := ret '; ' hold;
END IF;
END LOOP;
RETURN ret;
END;
/