Soll von einem anderen Programm (z.B. Access) aus auf Excel zugegriffen werden, so muss jedes Range und Rows mit dem richtigen Worksheet-Objekt adressiert werden.
Sonst sucht sich Excel bei mehreren Instanzen und benannten Bereichen einen aus bzw. liefert einen Fehler mit ... für _Global fehlgeschlagen.
2.26.2008
Tasks finden leicht gemacht
2.04.2008
Nützliche Funktionen
Für die Ermittlung von Teilen eines Datums immer wieder gut zu gebrauchen:
EXTRACT (YEAR from sysdate)
Cache leeren:
ALTER SYSTEM FLUSH BUFFER_CACHE;
EXTRACT (YEAR from sysdate)
Cache leeren:
ALTER SYSTEM FLUSH BUFFER_CACHE;
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.
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!
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.18.2008
Native Dynamic SQL
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:
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;
/
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;
/
Abonnieren
Posts (Atom)