Follow Us on Twitter

Views en Pipeline table functies voor Apex

by Douwe Pieter van den Bos on July 21, 2008 · 0 comments

Het komt nog wel eens voor dat je in een applicatie schermen wil baseren op niet bestaande tabellen of een combinatie van tabellen. In Apex zou dit betekenen, dat je los items moet toevoegen en het vullen van deze velden en het “er vervolgens wat mee doen” ervan moet afhandelen in Processes.

Mijn ervaring hiermee is, dat het sneller, handiger en beter onderhoudbaar kan door dit naar de database te verplaatsen d.m.v. zogenoemde “Pipeline Table Functions ” en natuurlijk views…

Dat het werken met views soms prettiger werkt dan met inmense Queries in je schermen, daar zijn heel veel mensen tegenwoordig al achter. Het heeft namelijk 2 voordelen. Je hoeft niet enorme lappen onoverzichtelijke Query code gaan onderhouden in je scherm, maar kan hiervoor gewoon een tool als SQL Developer gebruiken. Daarnaast is de Query d.m.v. de view te hergebruiken in andere schermen.

Nu komt het ook voor, dat items op een scherm redundant (afleidbaar) zijn door een bepaalde berekening los te laten op een waarde uit een database kolom. Ook hiervoor zou je natuurlijk een view kunnen gebruiken. Dit kan alleen niet altijd. Denk maar eens aan het combineren van waarden onder verschillende condities. Je wilt ook geen oneindige “Union All” creeëren. Toch wil ik meerdere reports die ongeveer dezelfde selectie nodig hebben.
In dit geval kan je gebruik maken van “Pipeline Table Functions “. Voor degenen die deze functionaliteit van Oracle niet kennen zal ik het even kort uitleggen. Een “Pipeline Table Function ” is een functie in de database die een variabele van het type “Table” teruggeeft ( table type / array ) op een dergelijke manier, dat de functie gebruikt kan worden in de “FROM” van een simpele SQL Query. Bijvoorbeeld: stel dat ik een “Pipeline Table Function” heb gemaakt die “pipe_voorbeeld” heet met een parameter “in_parameter”, dan zou mijn query er alsvolgt uit kunnen zien:

SELECT *
FROM TABLE( pipe_voorbeeld( in_parameter => ‘VOORBEELD’ ) );

“Pipeline Table Functions” hebben verder geen beperkingen t.o.v. andere functies.

Op deze manier kan je dus toch een scherm baseren op een object die is vastgelegd in de database die je in je schermen kan hergebruiken zo vaak als je wilt en je hoeft het ook maar één keer te maken.

Ratings:
VN:F [1.9.4_1102]
Rating: 0.0/5 (0 votes cast)
Tags: ,

Leave a Comment

Previous post:

Next post: