Dinamička suma na interaktivnome gridu koristeći JSON i sys_refcursor

Track

APEX

Datum i vrijeme

petak, 20. listopad 2023., 09:00

Dvorana

Dvorana C

Trajanje

45'

Interaktivni grid (IG) je vjerojatno najkompleksnija komponenta Oracle Apexa. To je zato što IG nudi puno više od samog pregleda i uređivanja podataka. Ali kako grid funkcionira? Što se događa ako umetnemo 'n' redaka s nekim brojčanim vrijednostima i želimo izračunati trenutni zbroj tog stupca prije nego pritisnemo gumb za spremanje? Problem je što nemamo novo umetnute i ažurirane retke na strani servera (u bazi podataka). Stoga jednostavno ne možemo iterirati kroz podatke u bazi jer te podatke tamo nemamo. Možemo li jednostavno iterirati kroz te brojeve na klijentskoj strani pomoću JavaScripta? Ponekad da, ali šanse su da, kada radimo s velikim skupom podataka, naš IG ima samo dio skupa podataka učitanog u naš model. To se događa zbog performansi, jer rad s velikim skupom podataka i učitavanje te količine podataka u IG model zahtijevalo bi puno prijenosa podataka i moglo bi biti vremenski zahtjevno, a samo za uređivanje i spremanje nekoliko redaka. Dakle, imamo neke podatke na serveru i neke na klijentu. Možemo li iz toga izračunati zbroj našeg stupca? Naravno da možemo.Formula je prilično jednostavna, iskreno rečeno. To je suma (nvl(redak-na-klijentu, redak-na-serveru)). I sve ćemo to raditi u samo jednom jeziku, PL/SQL-u! Ali čekaj, rekao si da nemamo nespremljene podatke u našoj bazi podataka! Tu dolazimo do JSON-a. Možemo zapakirati naše podatke s klijentske strane u JSON i jednostavno ga poslati u Ajax callback. Tamo možemo iterirati kroz naš JSON i dobiti rezultat s klijentske strane. Zatim, možemo iterirati kroz preostale podatke na našem serveru koje nismo dirali koristeći sys_refcursor (a to imamo u bazi podataka).Sljedeći problem u stvarnom vremenu s kojim sam se susreo je da većina mojih kolega nisu developeri u JavaScriptu. Pakiranje podataka u JSON i slanje na Ajax callback nije tako jednostavno za njih. Zato sam za njih pripremio globalnu funkciju unutar JavaScripta na workspace-u za koja se automatski pretplati na model i šalje podatke na Ajax callback koristeći samo nekoliko linija koda u JavaScript inicijalizacijskom kodu na gridu. Također, pripremio sam univerzalni paket u PL/SQL-u koji obrađuje dolazne JSON podatke, zbraja ih i isto radi za podatke na našem serveru, vraća resolved promise JavaScriptu i tu imamo našu sumu¬¬. Dakle, fetchAll više nije jedina opcija za nas!

Detalji o predavanju

Razina težine: Srednje detaljno
Poželjna funkcija slušatelja: Programeri
Grupa aktivnosti: APEX

O predavaču

T-Shirt pokrovitelj

Pokrovitelj lokacije

Medijski pokrovitelj

HrOUG.hr

Konferenciju organizira Hrvatska udruga Oracle korisnika. Više o udruzi možete saznati na Hroug.hr.

Linkedin

Pratite nas na Linkedinu

Prati nas na Twitteru

Pratite nas na Twitteru

Prati nas na Facebooku