Donnerstag, 30. November 2017

einen Forms Datenblock mit einer Pipelined Table Function erstellen

Heute wurde ich im Daily Standup im aktuellen Projekt gefragt, ob ich oder einer der Kollegen schon mal einen Forms Datenblock mit einer Pipelined Table Function erstellt habe. Dies habe ich abgefragt und verneint. Und vor kurzem tauchte diese Frage auch schon im Oracle Support Forum auf.

Also habe ich das einfach ausprobiert und kann sagen, es funktioniert. Dieses Vorgehen will ich hier einmal exemplarisch beschreiben. Als Datenquelle dient das gute DB-Schema HR mit den Tabellen Employees und Department.

Zuerst erstelle ich auf der Datenbank ein Package mit einer Pipelined Table Function.


Nach dem Erstellen schaue ich mir einmal das Ergebnis als SQL im SQLDeveloper an für Department 50.


Das funktioniert ja bisher alles ohne Probleme, das Erstellen einer einfachen Forms-Maske dafür ist auch nicht schwer. Erst erstelle ich mir mit dem Wizard basierend auf einer View den Datenblock und das Layout und nachher schalte ich das Ganze auf die Pipelined Table Function in einer Select-From Query um.


Am Ende dann die fertige Maske, die übrigens mit Forms 10g erstell wurde. Es geht also recht einfach, auch neue Features der Datenbank in Forms zu nutzen.


Übrigens kann ich das o.g. Package nicht in Forms erstellen, es muß auf der Datenbank sein. Auch in Forms 12c geht das nicht, da wird die Pipelined Table Function noch nicht von der Engine verstanden. Aber das gehört ja auch eher als API in die Datenbank finde ich.

Ob ich den konstanten Parameter 50 auch noch auf ein referenziertes Item beispielsweise eines anderen Forms-Blocks umbauen kann, habe ich noch nicht probiert. Es scheint aber nicht zu funktionieren, siehe Thread im Forum.

Dort wird als Lösung die Nutzung einer Package-Variable bzw. eines Sys-Kontextes vorgeschlagen:
AND d.deptno = SYS_CONTEXT ('from_clause_context', 'deptno')

Was aber auch geht, ist die Benutzung fester Werte mit Variablen in der Zuweisung.

asQuery_V := 'TABLE(Package.TableFunction('||Variable_1_V||',' ||Variable_2_V||'))';
set_block_property('BLOCK', QUERY_DATA_SOURCE_NAME, asQuery_V);

Viele Grüße
Holger

Samstag, 25. November 2017

Mein persönlicher Rückblick auf die #DOAG2017

Nach 5 jähriger Abstinenz von der DOAG Hauptkonferenz hatte ich endlich wieder das Vergnügen, dieses Jahr vom 20-23.11.2017 dorthin zu können. Die Anreise am Montag verlief leider dank der deutschen Bahn alles andere als glücklich (es gab 90 Minuten Verspätung) und so verpasste ich leider das #ACE Dinner, das Martin Klier angesetzt hatte.


Im Vorfeld schon grob das Veranstaltungsprogramm mit den möglichen Sessions zusammengesucht, war ich ganz gut vorbereitet für den ganzen Marathon an Vorträgen. Dafür aber auch noch ein paar persönliche Gespräche angesetzt, mit ehemaligen Kollegen, mit Forms Gleichgesinnten und besonders mit Michael Ferrante, dem Oracle Forms Product Manager. Mein persönlicher Fokus bestand natürlich hauptsächlich auf Forms, SQL, PL/SQL, APEX, Weblogic und Docker Sessions und meine Erwartungen daran wurden auch erfüllt. Dazu später aber noch mehr.

Der Dienstag stand ganz unter dem Zeichen von Forms Vorträgen, die Kollegen haben mich später gefragt, wo ich denn den ganzen Tag lang war. Meine Antwort: von einer Session zur nächsten. :-) Die Referenten für Forms waren u.a. Mia Urman, Michael Ferrante, Jürgen Menge, Gerd Volberg. Am Abend gab es dann das Forms Community Meeting, das sehr gut besucht war. Dort konnten wir M. Ferrante alle Fragen stellen, die uns run um Oracle Forms beschäftigen. Teilweise sehr interessante Dinge, die hoffentlich noch kommen werden. Eins scheint unumstößlich: selbst Oracle Forms soll es angeblich in die Cloud schaffen.







Das war also der erste Tag, im Rückblick der spannendste für mich von den 3 Veranstaltungstagen. Abends ging es dann mit der DOAG DB Community in der Nürnberger Altstadt zum gemütlichen Ausklang.

Am 2. Tag war ein Tag ohne Forms Vorträge, dafür gibt es ja genug andere Themen. Ganz oft gab es zumindest für mich viele interessante parallele Sessions, da war entscheiden angesagt. Wie immer ein ganz großes Angebot auf der DOAG. Ich meine gehört zu haben, dass die Hälfte aller Einreichungen an Vorträgen abgesagt werden musste.
  • Ausfallsicherheit für den Weblogic Admin Server
  • Goldene Regeln für schlechte Programmierung
  • intelligente Chatbots
  • SQL Magic
  • APEX REST Services in 5.2
  • PL/SQL API 
  • Docker for Dummies
Und schon war der letzte Tag da, der Donnerstag. Das war ein gemischter Tag, den ich mit ein paar Vorträgen und vielen Gesprächen verbracht habe. Highlight des Tages waren u.a. der persönliche Talk mit einem umkomplizierten Michael Ferrante und einem Vortrag von Adam Lukaszewski zum Thema Boost your Forms Development with GIT and Forms API Master. Dabei wurde schon gezeigt, wie man mit Hilfe von Git, dem Forms API Master und dem Mergetool parallel an Forms Objekten entwickeln kann, auch mit mehreren Branches. Das kannte ich so bisher auch noch nicht, denn sonst hieß es ja immer, Mergen von binären Objekten geht nicht.



Was soll ich sagen? Es waren tolle informative Tage in Nürnberg, mit gutem Austausch und neuen Erfahrungen. Neue Türen geöffnet und viele bekannte Gesichter gesehen und gesprochen. Wenn mich jemand fragt, würde ich sagen: es hat sich total gelohnt. Vielen Dank natürlich an die DOAG für die tolle Vorbereitung und Planung und an meinen Arbeitgeber, der mir das ermöglichte. Nächstes Jahr bin ich hoffentlich auch selber wieder mit einem Vortrag dabei. Ganz persönlich fand ich auch die Leute von Oracle sehr angenehm und menschlich. Ein paar Bilder für diesen Beitrag habe ich von anderen Twitteren genommen, ich hoffe das ist ok.

Viele Grüße
Holger