Dienstag, 20. März 2012

Forms11g - Procedure-Block mit dynamischem SQL in der Datenbank definiert

Häufig möchte man zwischen verschiedenen Tabellen einfach nur schnell navigieren oder beispielsweise Ausgabemengen für Reports bzw. Excel zusammenstellen. Eine Variante besteht darin, dass man die Datenquelle eines Blockes als SQL-Source definiert und das Statement dynamisch verändert. Hierbei ist jedoch die Steuerung im Modul integriert, bei jeweiligen Änderungen müssen die SELECTS im Modul nachgepflegt werden.


Eine andere Möglichkeit besteht darin, die Definition in der Datenbank, in einer Definitionstabelle und etwas PL/SQL - Code generisch zu verwalten:



Es wird eine statische Typdefinition für max. 5 Tabellenspalten mit dem Datentyp VARCHAR2(250) angewendet:



Den dynamischen PL/SQL - Block habe ich wie folgt implementiert:



Der Forms-Block wird als Procedure - Block definiert:



Die 5 Tabellen-Items sind im Forms-Block definiert:



Die Parameter des Procedure-Blockes müssen natürlich identisch zu den Procedure-Parametern der PL/SQL-Procedure sein:



Ein kleines Demo zeigt die Anwendung.

Somit kann man in der Datenbank die Definition der Formsapplikation quasi direkt steuern:

Eine "Database driven Forms Application" ;-) .


Ich hoffe, es hilft weiter.

Keine Kommentare: