prog:oracle_apex_interactive_gird
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
prog:oracle_apex_interactive_gird [2018/04/24 15:53] – [Lösung] gpipperr | prog:oracle_apex_interactive_gird [2018/04/30 16:48] (aktuell) – [Lösung] gpipperr | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | =====Oracle Apex 5 - Interactive Grid anpassen und konfigurieren - DML ändern bei ORA-22816: unsupported feature with RETURNING clause===== | ||
+ | |||
+ | **Das Problem**: | ||
+ | |||
+ | <code bash> | ||
+ | ORA-22816: unsupported feature with RETURNING clause | ||
+ | |||
+ | 22816. 00000 - " | ||
+ | |||
+ | *Cause: | ||
+ | |||
+ | | ||
+ | |||
+ | and INSTEAD OF Triggers. | ||
+ | |||
+ | *Action: | ||
+ | </ | ||
+ | |||
+ | |||
+ | In einer gehosteten APEX Umgebung darf/kann nur mit DB Links mit den eigentlichen Traget Datenbanken für die Applikation gearbeitet werden. | ||
+ | |||
+ | Das ist auf keinen Fall zu empfehlen und führt zu ärgerlichen Problemen, lässt sich aber in diesen, auch in Denken und in der Verantwortung, | ||
+ | |||
+ | Soll nun der Interactive Grid für die Pflege von Stammdaten Tabellen verwendet werden, hat man ein Problem. Das Einfügen eines neuen Datensatzes schlägt fehl. | ||
+ | |||
+ | Im Default wird beim Anlegen einer neuen Zeile in der Tabelle die " | ||
+ | |||
+ | |||
+ | ====Lösung==== | ||
+ | |||
+ | |||
+ | Umstellen vom Default auf einen eigene PL/SQL Routine. | ||
+ | |||
+ | Zum Glück hat Patrick Wolf das aber in einem Community Thread beantwortet, | ||
+ | |||
+ | |||
+ | Den "page process" | ||
+ | |||
+ | |||
+ | Wichtig ist hier der APEX$ROW_STATUS | ||
+ | |||
+ | * **I** oder **C** => Neuen Datensatz einfügen ( in aktuellen APEX C) | ||
+ | * **U** => aktuellen Datensatz ändern | ||
+ | * **D** => aktuellen Datensatz löschen | ||
+ | |||
+ | Die Spalten werden über den Spaltenanmen im IG referenziert. | ||
+ | |||
+ | |||
+ | Der Code für den angepassten "page process" | ||
+ | <code plsql> | ||
+ | begin | ||
+ | case : | ||
+ | when ' | ||
+ | |||
+ | | ||
+ | DEPTNO | ||
+ | , DNAME | ||
+ | , LOC) | ||
+ | | ||
+ | |||
+ | -- not possible over database Link! | ||
+ | | ||
+ | |||
+ | | ||
+ | from dept | ||
+ | where DEPTNO = : | ||
+ | and DNAME = :DNAME | ||
+ | and LOC = :LOC; | ||
+ | |||
+ | when ' | ||
+ | | ||
+ | set DNAME = : | ||
+ | ,deptno = :DEPTNO | ||
+ | , loc = :LOC | ||
+ | where rowid = : | ||
+ | |||
+ | when ' | ||
+ | | ||
+ | where rowid = : | ||
+ | |||
+ | | ||
+ | | ||
+ | |||
+ | end case; | ||
+ | end; | ||
+ | </ | ||
+ | (siehe Quelle für den orginal Post von Patrick Wolf ) | ||
+ | |||
+ | |||
+ | |||
+ | Nach dem nun diese erste Hürde genommen ist, kann das ganze robuster über den Aufruf eines passenden PL/SQL Packages gestaltet werden. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Quellen ==== | ||
+ | |||
+ | |||
+ | APEX 5.1 How to manually process Interactive Grid data using PL/SQL => https:// | ||
prog/oracle_apex_interactive_gird.txt · Zuletzt geändert: 2018/04/30 16:48 von gpipperr