|
In "APEX Collections" hineinsehen - außerhalb der Anwendung
Nach einer Idee von Walter Meier, Siemens AG, München
APEX Collections sind sind bekanntlich das Mittel der Wahl, wenn es
darum geht, mehrere Datensätze in einer Sitzung zwischenzuspeichern, man
aber keine "richtige" Tabelle verwenden möchte. APEX Collections werden
mit dem PL/SQL-Paket APEX_COLLECTION verwaltet - die darin gespeicherten
Datensätze können aus der View APEX_COLLECTIONS ausgelesen werden.
Die
Inhalte einer Collection sind an die APEX-Session, den Workspace und die
Applikation gebunden. In einer anderen Session sind die Inhalte also schon
nicht mehr sichtbar.
Wenn eine Collection (bspw. "MEINE_COLLECTION") in einer APEX-Anwendung mit
Inhalten gefüllt wurde, führt eine SQL*Plus-Abfrage auf die View APEX_COLLECTIONS
stets zu einer leeren Ergebnismenge:
Geht es ans Debugging einer APEX-Anwendung, so würde man sich schon
wünschen, die Inhalte einer Collection aus SQL*Plus, dem SQL Developer
oder einer anderen APEX-Sitzung heraus ansehen zu können. Um dies zu erreichen,
schauen wir zunächst einfach mal in die Definition der View APEX_COLLECTIONS
hinein. Die folgenden SQL-Kommandos müssen Sie als DBA absetzen ...
Die View heißt also eigentlich WWV_FLOW_COLLECTIONS und liegt (wie alle APEX-Objekte)
im Schema APEX_030200. Schauen Sie sich als nächstes die View-Definition an.
Merken Sie schon, wie vorteilhaft und angenehm es ist, mit einem datenbankgestützten
Werkzeug zu arbeiten ...?
Die WHERE-Klausel dieser View bewirkt also, dass man die Collection-Inhalte
aus SQL*Plus heraus nicht betrachten kann. Man könnte nun also mit
PL/SQL-Prozeduren die Workspace-ID (finden Sie über die View APEX_WORKSPACES heraus),
die Applikations-ID und die Session-ID (kann aus der URL im Browser entnommen werden)
setzen - anschließend kann man die Collection lesen ...
Wem das zu mühsam ist, der kann sich auch (als DBA) eine neue View
erzeugen, die eben ohne die WHERE-Klauseln arbeitet - geben Sie der
View aber auf jeden Fall einen anderen Namen und
schützen Sie sie vor unberechtigten Zugriffen: Vergeben Sie das SELECT-Privileg daran
niemals
an PUBLIC.
Nun können Sie die Collection-Inhalte mit einfachen SQL-Kommandos ansehen; das
Debugging wird so wesentlich einfacher ...
Zurück zur Community-Seite
|