KURSORI BAZE PODATAKA U ORACLE 11g

Size: px
Start display at page:

Download "KURSORI BAZE PODATAKA U ORACLE 11g"

Transcription

1 KURSORI BAZE PODATAKA U ORACLE 11g SAŽETAK Kursor baze podataka je privatno SQL područje u kojem se čuvaju informacije za procesiranje određene SQL naredbe. Oracle PLSQL jezik koristi implicitne i eksplicitne kursore. PLSQL implicitno deklarira kursor za sve SQL DML naredbe, kao i SELECT upite koji vraćaju samo jedan redak. Ako želimo precizniju kontrolu kod procesiranja upita, možemo deklarirati eksplicitni kursor. Kada upit vraća više od jednog retka, tada obavezno moramo deklarirati eksplicitni kursor. Kursor varijable (REF kursori) su neka vrsta pokazivača na retke - rezultate upita. Koristimo ih kada želimo izvršiti upit u jednom potprogramu, a rezultat procesirati u drugom potprogramu (koji može biti pisan i u drugom jeziku). Koristeći dinamički SQL, SQL naredbe možemo graditi dinamički za vrijeme izvršavanja programa i tako možemo pisati fleksibilnije aplikacije, kod kojih (aplikacija) puni tekst SQL naredbe može biti nepoznat u vrijeme prevođenja programa. Za dinamički SQL možemo koristiti "stari" paket DBMS_SQL ili "novi" dinamički SQL. U Oracle 11g možemo koristiti nove naredbe DBMS_SQL.TO_CURSOR_NUMBER i DBMS_SQL.TO_REFCURSOR za pretvaranje REF kursora u DBMS_SQL kursor i obrnuto. ABSTRACT A database cursor is a name for a specific private SQL area in which information for processing the specific statement is kept. PLSQL uses both implicit and explicit cursors. PLSQL implicitly declares a cursor for all SQL data manipulation statements on a set of rows, including queries that return only one row. If we want precise control over query processing, we can declare an explicit cursor. We must declare an explicit cursor for queries that return more than one row. Cursor variables (REF cursors) are like pointers to result sets. We use them when we want to perform a query in one subprogram, and process the results in a different subprogram (possibly one written in a different language). Using dynamic SQL, we can build SQL statements dynamically at runtime and we can create more general purpose, flexible applications because the full text of a SQL statement may be unknown at compilation. We can use "old" package DBMS_SQL or "new" native dynamic SQL. In Oracle 11g we can use new features DBMS_SQL.TO_CURSOR_NUMBER and DBMS_SQL.TO_REFCURSOR to convert a REF cursor to DBMS_SQL cursor and vice versa. 1. UVOD SQL je (visoko) deklarativni programski jezik, koji može vraćati (čitati) ili ažurirati (unositi, mijenjati, brisati) ne samo jedan redak podataka, već čitav skup redaka (skup se može sastojati od nula, jednog ili samo par redaka, ali i od jako velikog broja redaka). Međutim, SQL se u programiranju ne koristi samostalno, već se koristi zajedno sa nekim drugim programskim jezikom, uglavnom proceduralnim. Česti način povezivanja SQL-a sa drugim jezikom je taj da se SQL ugrađuje u drugi jezik, koji tada obično nazivamo jezik-domaćin (host language). Oracle korporacija je krajem 80- tih godina prošlog stoljeća napravila svoj jezikdomaćin PLSQL (Procedural Language extensions to the Structured Query Language), na temelju programskog jezika ADA 83. Oracle je tako dobro integrirao proceduralni jezik PLSQL i jezik SQL, da u praksi često zaboravimo kako, zapravo, radimo sa dva jezika. No, u stvarnosti su to ipak dva odvojena jezika, što pokazuje i interna realizacija prevoditelja (ili interpretera) u Oracle bazi. Kada baza prevodi PLSQL programski kod, PLSQL prevoditelj prevodi one naredbe koje on "razumije" (tj. PLSQL naredbe), a SQL naredbe šalje SQL prevoditelju. Međutim, između svakog proceduralnog jezikadomaćina, koji procesira redak po redak, i deklarativnog SQL jezika, koji radi sa skupom redaka, postoji očiti nesklad u radu, pa to vrijedi i za PLSQL. Taj se nesklad premošćuje pomoću kursora baze podataka (database cursors). Kursor predstavlja neku vrstu logičkog pokazivača na skup redaka koji (skup redaka) baza vraća kao odgovor na postavljeni upit. Proceduralni jezik koristi kursor da bi obrađivao redak po redak odgovora.

2 2. IMPLICITNI I EKSPLICITNI KURSORI SUBP sustavi (sustavi za upravljanje bazama podataka) različitih proizvođača mogu se značajno razlikovati ne samo u internoj realizaciji, nego i po svom ponašanju (npr. različit način rada sa transakcijama i zaključavanjem redaka), ali i po dijalektu SQL jezika i po korištenoj terminologiji. Tako, kursori u Oracle relacijskom sustavu ne moraju značiti isto što i kursori u nekom drugom relacijskom sustavu. Važno je napomenuti da Oracle sustav uvijek radi sa kursorima. No, ti kursori mogu u programskom kodu biti "skriveni" ili mogu biti "vidljivi" - govorimo o implicitnim i eksplicitnim kursorima. PLSQL deklarira implicitni kursor onda kada u programskom kodu koristimo DML naredbe (INSERT, UPDATE, DELETE) ili SELECT naredbu koja vraća samo jedan redak: SELECT stupac1, stupac2 INTO varijabla1, varijabla2 FROM tablica Kod ovih naredbi nigdje se u kodu ne vidi riječ CURSOR. Međutim, interno Oracle PLSQL prevoditelj izvodi različite radnje kao što su otvaranje kursora, ugrađivanje varijabli jezikadomaćina (bind variables) u SQL upit, slanje upita SQL prevoditelju, čitanje redaka, zatvaranje kursora. Postoje različite verzije eksplicitnih kursora. "Najeksplicitnija verzija" prikazana je sljedećim programskim kodom: CURSOR art_c IS SELECT sifra, naziv FROM m_artikli; sifra_l m_artikli.sifra%type; naziv_l m_artikli.naziv%type; OPEN art_c; FETCH art_c INTO sifra_l, naziv_l; EXIT WHEN art_c%notfound; DBMS_OUTPUT.PUT_LINE (sifra_l ' ' naziv_l); CLOSE art_c; EXCEPTION WHEN OTHERS THEN IF art_c%isopen THEN CLOSE art_c; END IF; RAISE; Vidimo da se u prikazanom PLSQL kodu kursor deklarira u deklarativnom dijelu PLSQL koda (), a u izvršnom dijelu (iza ) se otvara (OPEN), čita (FETCH) i zatvara (CLOSE). Ako dođe do problema u toku izvršavanja programa, "skače" se na dio za obradu iznimaka (EXCEPTION), gdje se kursor zatvara, ako je bio otvoren. Napomenimo da deklaracija kursora ne mora biti u istom dijelu koda u kojem se kursor obrađuje (otvara, čita ), već može biti u nekom drugom (pot)programu, npr. deklaracija kursora može biti u specifikaciji jednog paketa, a kod koji obrađuje kursor može se nalaziti u tijelu drugog paketa. Na taj način omogućeno je da se jedna deklaracija kursora koristi na više mjesta. U prethodnoj varijanti eksplicitnog kursora morali smo eksplicitno prikazati i npr. otvaranje, čitanje, zatvaranje kursora. Postoji i druga varijanta eksplicitnog kursora, koja je jednostavnija od prethodne: CURSOR art_c IS SELECT sifra, naziv FROM m_artikli; FOR redak IN art_c DBMS_OUTPUT.PUT_LINE (redak.sifra ' ' redak.naziv); Osim u rijetkim slučajevima, danas je uglavnom preporučljiva ova druga varijanta. Osim što je jednostavnija od prve varijante, druga varijanta ima i bolje performanse, od verzije 10gR2 Oracle baze. Konačno, postoji i treća varijanta eksplicitnog kursora. Zapravo, u ovoj varijanti niti ne vidimo pojavljivanje ključne riječi CURSOR, ali je to ipak

3 eksplicitni kursor jer (za razliku od naredbe SELECT INTO ) može čitati više redaka: FOR redak IN ( SELECT sifra, naziv FROM m_artikli) DBMS_OUTPUT.PUT_LINE (redak.sifra ' ' redak.naziv); Iako je najjednostavnija, ova varijanta ima i jednu manu deklaracija kursora, tj. SELECT naredba, uvijek je fizički vezana za dio u kojem se vrši procesiranje. To znači da, za razliku od prethodne dvije varijante, ovdje ne možemo imati jednu deklaraciju koju ćemo koristiti na više mjesta. S druge strane, ovakav kod je čitljiviji. Važno je napomenuti da je jedna od čestih početničkih grešaka korištenje kursora i SQL DML naredbe unutar petlje, iako je dovoljna samo obična SQL DML naredba, kao u sljedećem primjeru: FOR redak IN ( SELECT sifra, cijena FROM m_artikli WHERE cijena < 100) UPDATE m_artikli SET cijena = cijena * 1.1 WHERE sifra = redak.sifra; Umjesto toga, naravno, možemo napisati samo: UPDATE m_artikli SET cijena = cijena * 1.1 WHERE cijena < 100; Varijanta sa "čistim" SQL-om u ovom je slučaju i jednostavnija od PLSQL varijante (to nije uvijek tako ponekad je proceduralni kod kraći i razumljiviji od SQL koda). No, najvažnije je to da je SQL varijanta u pravilu brža, jer Oracle ne mora "šetati" između PLSQL prevoditelja i SQL prevoditelja (tzv. context switch) u svakoj iteraciji petlje. 3. KURSOR VARIJABLE (REF KURSORI) Iz prethodnih primjera vidi se da se eksplicitni kursori moraju otvoriti, obrađivati i zatvoriti unutar istog dijela programskog koda, npr. unutar istog potprograma ili unutar istog PLSQL bloka. Jedino se deklaracija eksplicitnog kursora može nalaziti negdje drugdje. Za razliku od toga, tzv. kursor varijable mogu se otvoriti u jednom dijelu programskog koda, pa se u istom dijelu mogu čitati, a onda se čitanje može prebaciti na drugi dio programskog koda, npr. drugi potprogram, koji se može nalaziti čak i na drugom računalu. Kursor varijable su varijable čiji je tip REF kursor (REF kao referenca ili pokazivač), pa se u Oracle literaturi i same varijable često neformalno nazivaju REF kursori. Kursor varijable predstavljaju pokazivač na "obični" kursor. Budući da je "obični" kursor sam po sebi neka vrsta (logičkog) pokazivača, moglo bi se reći da je kursor varijabla "pokazivač na pokazivač" (naravno, ne u istom smislu kao što je to "pokazivač na pokazivač" u programskim jezicima C i C++). Kursor varijable, osim što omogućavaju da se obrada kursora vrši u dva ili više dijela programskog koda, omogućavaju i da ista kursor varijabla jedanput pokazuje na jedan kursor, a drugi put na drugi kursor, čime se omogućava fleksibilnije programiranje (još fleksibilnije programiranje moguće je sa tzv. dinamičkim kursor varijablama, koje se prikazuju u 5.točci). Rad sa kursor varijablama vrlo je sličan radu sa eksplicitnim kursorima koji smo prikazali u prvoj varijanti u 2.točci: -- REF kursor tip (jaki) TYPE art_rc_type IS REF CURSOR RETURN m_artikli%rowtype; -- kursor varijabla tog tipa art_rc art_rc_type; -- varijabla ROWTYPE tipa art_row m_artikli%rowtype; OPEN art_rc FOR SELECT * FROM m_artikli; FETCH art_rc INTO art_row; EXIT WHEN art_rc%notfound;

4 DBMS_OUTPUT.PUT_LINE ( ); EXCEPTION WHEN OTHERS THEN IF art_rc%isopen THEN END IF; RAISE; U prethodnom smo kodu deklarirali tzv. jaki REF kursor tip, jer smo u deklaraciji REF kursor tipa rekli da kursor varijabla (tog tipa) mora pokazivati na kursor koji mora imati baš određenu strukturu u ovom slučaju strukturu koja je identična strukturi tablice m_artikli, jer smo u kodu naveli "RETURN m_artikli%rowtype". Osim jakog REF kursor tipa (i varijabli tog tipa), postoji i slabi REF kursor tip (i varijable tog tipa), kao što pokazuje sljedeći primjer: -- REF kursor tip (slabi) TYPE art_rc_type IS REF CURSOR; -- kursor varijabla tog tipa art_rc art_rc_type; -- varijabla ROWTYPE tipa art_row m_artikli%rowtype; dob_row m_dobavljaci%rowtype; OPEN art_rc FOR SELECT * FROM m_artikli; OPEN art_rc FOR SELECT * FROM m_dobavljaci; U prethodnom primjeru slabi REF kursor tip bio je jednostavno deklariran kao REF CURSOR, bez nastavka RETURN (što označava jaki REF kursor tip). Kursor varijabla slabog tipa mogla se zato koristiti dva puta sa dva sasvim različita kursora - jedan ima strukturu kao tablica m_artikli, a drugi kao tablica m_dobavljaci. Slabi REF kursor tip je, dakle, fleksibilniji nego jaki REF kursor tip. Inače, ne moramo niti definirati vlastiti slabi REF kursor tip, jer postoji predefinirani slabi REF kursor tip SYS_REFCURSOR. U praksi se REF kursori i kursor varijable najčešće koriste tako da jedan program (najčešće je to funkcija, ali može biti i procedura sa OUT varijablom) deklarira i otvori kursor varijablu, a drugi program poziva prvi program i, zahvaljujući dobivenoj kursor varijabli, obrađuju kursor (na koji pokazuje kursor varijabla). Npr., u sljedećem primjeru imamo funkciju koja deklarira, otvara i vraća kursor varijablu, a drugi program poziva tu funkciju i koristi dobivenu kursor varijablu: CREATE FUNCTION funkcija RETURN SYS_REFCURSOR IS -- kursor varijabla -- slabog REF kursor tipa art_rc SYS_REFCURSOR; OPEN art_rc FOR SELECT * FROM m_artikli; RETURN art_rc; CREATE PROCEDURE procedura IS art_rc SYS_REFCURSOR; art_row m_artikli%rowtype; art_rc := funkcija; FETCH art_rc INTO art_row; EXIT WHEN art_rc%notfound; DBMS_OUTPUT.PUT_LINE ( ); Važno je primijetiti da prvi program (u ovom slučaju funkcija) ne smije zatvoriti kursor varijablu, jer onda ne bi imao što poslati drugom programu (u ovom slučaju proceduri). S druge strane, "dužnost" je drugog programa, primatelja, da zatvori kursor varijablu. U praksi su kursor varijable najčešće najbolji način za prenošenje podataka između Oracle baze i klijentskog programa pisanog u Javi (ili nekom sličnom jeziku).

5 4. DINAMIČKI SQL PAKET DBMS_SQL U svim dosadašnjim primjerima programski kod bio je statički, tj. cjelokupan kod bio je formiran već u vrijeme prevođenja programa. Za razliku od toga, dinamički programski kod se kreira za vrijeme izvođenja programa. I statički i dinamički programski kod imaju svoje prednosti i mane. Prednost je dinamičkog koda da omogućava vrlo fleksibilno (generičko) programiranje. Mana je dinamičkog koda da se on provjerava tek u fazi izvođenja, što znači da se u toku izvođenja mogu pojaviti neke greške koje bi se u statičkom kodu otkrile unaprijed, u vrijeme prevođenja. Dinamički kod (SQL i PLSQL) u Oracle bazi pojavio se prvi puta u verziji Oracle 7, i to kao paket DBMS_SQL. Treba napomenuti da, iako se paket zove DBMS_SQL, on omogućava ne samo dinamički SQL, nego i dinamički PLSQL. No, u nastavku prikazujemo primjer korištenja paketa DBMS_SQL za dinamički SQL: stmt_str VARCHAR2(200); cur_hdl INT; rows_processed INT; name VARCHAR2 (10); salary INT; -- otvaranje kursora cur_hdl:= dbms_sql.open_cursor; -- definiranje SELECT naredbe stmt_str := 'SELECT ename, sal' ' FROM emp' ' WHERE job = :jobname'; dbms_sql.parse ( cur_hdl, stmt_str, dbms_sql.native); dbms_sql.bind_variable ( cur_hdl, 'jobname', 'SALESMAN'); dbms_sql.define_column (cur_hdl, 1, name, 200); dbms_sql.define_column (cur_hdl, 2, salary); rows_processed := dbms_sql.execute (cur_hdl); IF dbms_sql.fetch_rows (cur_hdl) > 0 THEN dbms_sql.column_value (cur_hdl, 1, name); dbms_sql.column_value (cur_hdl, 2, salary); --<procesiranje podataka> ELSE EXIT; END IF; dbms_sql.close_cursor (cur_hdl); Već se na prvi pogled vidi da rad sa paketom DBMS_SQL nije lagan, jer paket DBMS_SQL ne predstavlja "elegantno" proširenje programskog jezika PLSQL. 5. PRIRODNI DINAMIČKI SQL I DINAMIČKE KURSOR VARIJABLE Zbog složenosti rada sa paketom DBMS_SQL, Oracle je u verziji 8i napravio tzv. prirodni dinamički SQL (native dynamic SQL NDS). Kao i paket DBMS_SQL, tako i prirodni dinamički SQL omogućava ne samo dinamički SQL, već i dinamički PLSQL. Prirodni dinamički SQL zapravo čine dvije vrste naredbi. Jedna je naredba EXECUTE IMMEDIATE, a druga naredba je, zapravo, naredba za kreiranje dinamičke kursor varijable. U nastavku slijedi primjer korištenja naredbe EXECUTE IMMEDIATE: CREATE FUNCTION broj_redaka (tablica_p VARCHAR2) RETURN NUMBER IS naredba VARCHAR2 (1000); broj_redaka NUMBER; naredba := 'SELECT COUNT (*)' ' FROM ' tablica_p; EXECUTE IMMEDIATE naredba INTO broj_redaka; RETURN broj_redaka; Prethodna funkcija prima kao ulazni parametar ime (neke) tablice, te vraća broj redaka te tablice. U ovom je slučaju naredba koja se pozivala sa

6 EXECUTE IMMEDIATE bila vrlo jednostavna SQL naredba, ali to je mogao biti i neki, npr. vrlo dugačak, PLSQL programski blok. Druga naredba koja (uz EXECUTE IMMEDIATE) čini prirodni dinamički SQL je dinamička kursor varijable. U nastavku slijedi primjer rada sa dinamičkom kursor varijablom koji je (primjer) ekvivalentan primjeru rada sa DBMS_SQL paketom iz 4.točke: cur SYS_REFCURSOR; stmt_str VARCHAR2(200); name VARCHAR2(20); salary NUMBER; stmt_str := 'SELECT ename, sal' ' FROM emp' ' WHERE job = :1'; OPEN cur FOR stmt_str USING 'SALESMAN'; FETCH cur INTO name, salary; EXIT WHEN cur%notfound; --<procesiranje podataka> CLOSE cur; Vidimo da je rad sa dinamičkom kursor varijablom skoro istovjetan radu sa statičkom kursor varijablom (3.točka) jedina razlika je u tome što je ovdje SELECT naredba kreirana dinamički. Također, vidimo koliko je ovaj primjer jednostavniji od primjera rada sa paketom DBMS_SQL (4.točka). No, paket DBMS_SQL ima i nekih svojih prednosti, pa je zato i "preživio", a u bazi 11g dobio je i neke značajne nove mogućnosti. Naime, paket DBMS_SQL omogućava tzv. metodu 4 kod rada sa dinamičkim SQL-om. Četiri metode rada sa dinamičkim SQL-om su sljedeće: - Metoda 1 dozvoljava samo DML naredbe i to bez "bind" varijabli - Metoda 2 dozvoljava i DML naredbe sa "bind" varijablama - Metoda 3 dozvoljava i upite, tj. SELECT naredbu, koja mora imati fiksan broj stupaca i fiksan broj "bind" varijabli - Metoda 4 dozvoljava da broj stupaca i broj "bind" varijabli u SELECT naredbi bude nepoznat sve do trenutka izvođenja naredbe. Za razliku od paketa DBMS_SQL, prirodni dinamički SQL podržava metodu 4 samo ako koristimo naredbu EXECUTE IMMEDIATE (i to sa dinamičkim PLSQL blokom, a ne sa dinamičkim SQL-om), dok dinamičke kursor varijable ne podržavaju metodu 4. Međutim, u verziji 11g, Oracle je uveo nove naredbe DBMS_SQL.TO_CURSOR_NUMBER i DBMS_SQL.TO_REFCURSOR, čime je omogućeno da se REF kursor pretvori u DBMS_SQL kursor i obrnuto, pa se onda mogu koristiti mogućnosti paketa DBMS_SQL, a onda (po potrebi) DBMS_SQL kursor ponovno pretvoriti u REF kursor. Primjer toga dat je u sljedećoj točki. 6. DINAMIČKI REF KURSORI U BAZI 11g Pretpostavimo da imamo funkciju koja kao povratnu vrijednost (RETURN) vraća kursor varijablu, ali je kursor varijabla dobivena na temelju dinamički generiranog upita. Željeli bismo ju koristiti, ali kako napraviti "FETCH ref_cur INTO record_variable" kad ne znamo kakva je struktura record varijable? Problem nije lako rješiv, jer kursor varijabla ne omogućava opis svoje strukture, barem ne na direktan način. Do baze 11g jedino rješenje bilo je da funkcija (ili paket u kojem se ona nalazi) vraća ne samo kursor varijablu, već i upit koji je funkcija (dinamički) generirala. Također, mora se koristiti DBMS_SQL paket i njegove procedure PARSE i DESCRIBE_COLUMNS da bismo mogli napraviti nepoznatu record varijablu. I u bazi 11g moramo koristiti paket DBMS_SQL, ali funkcija, koja je dinamički generirala upit, više ne mora vratiti taj upit, već samo kursor varijablu. To se postiže zahvaljujući novim naredbama DBMS_SQL.TO_CURSOR_NUMBER i DBMS_SQL.TO_REFCURSOR, pomoću kojih je moguće REF kursor pretvoriti u DBMS_SQL kursor i obrnuto. U nastavku prikazujemo samo glavni dio programskog koda, tj. paket dyn_fetch.

7 Cjelokupni programski kod može se naći u tekstu pod nazivom " Dynamic Ref Cursor with Dynamic Fetch - An 11g Version " koji se nalazi na sljedećoj web stranici (firme Quest) nowledgedatabasetipsoracletipstabid311de fault.aspx pod Categories: PLSQL U specifikaciji paketa dyn_fetch deklarirane su globalne varijable g_count i g_record_def, koje služe za prenošenje podataka o broju stupaca i strukturi redaka dinamički kreiranog upita, te signatura procedura describe_columns i fetch_ref_cursor: CREATE PACKAGE dyn_fetch IS g_count NUMBER; g_record_def VARCHAR2(32000); PROCEDURE describe_columns (p_ref_cur IN OUT SYS_REFCURSOR); PROCEDURE fetch_ref_cur ( p_ref_cur SYS_REFCURSOR, p_process_def VARCHAR2); U tijelu paketa nalaze se pomoćne konstante, koje označavaju Oracle tipove podataka (npr. tip VARCHAR2 interno ima oznaku 1): CREATE BODY dyn_fetch IS varchar2_type CONSTANT PLS_INTEGER := 1; number_type CONSTANT PLS_INTEGER := 2; date_type CONSTANT PLS_INTEGER := 12; rowid_type CONSTANT PLS_INTEGER := 11; char_type CONSTANT PLS_INTEGER := 96; long_type CONSTANT PLS_INTEGER := 8; raw_type CONSTANT PLS_INTEGER := 23; mlslabel_type CONSTANT PLS_INTEGER := 106; clob_type CONSTANT PLS_INTEGER := 112; blob_type CONSTANT PLS_INTEGER := 113; bfile_type CONSTANT PLS_INTEGER := 114; Procedura describe_columns dobiva kao ulazni i izlazni parametar (IN OUT) kursor varijablu slabog tipa. Ta se kursor varijabla prvo pretvara u DBMS_SQL kursor, pomoću nove naredbe u 11g DBMS_SQL.TO_CURSOR_NUMBER. DBMS_SQL kursor se zatim opisuje pomoću naredbe DBMS_SQL.DESCRIBE_COLUMNS3, tj. nalazi se broj stupaca i struktura redaka dinamički kreiranog upita. Nakon toga se DBMS_SQL kursor ponovno pretvara u kursor varijablu, pomoću nove naredbe u 11g DBMS_SQL.TO_REFCURSOR. Na kraju se u FOR petlji struktura kursor varijable pamti u globalnu varijablu g_record_def: PROCEDURE describe_columns (p_ref_cur IN OUT SYS_REFCURSOR) IS l_cur INTEGER; l_desc_tab DBMS_SQL.DESC_TAB; l_type VARCHAR2 (100); l_col_type PLS_INTEGER; l_col_max_len PLS_INTEGER; l_col_precision PLS_INTEGER; l_col_scale PLS_INTEGER; -- novo u 11g l_cur := DBMS_SQL.TO_CURSOR_NUMBER (p_ref_cur); DBMS_SQL.DESCRIBE_COLUMNS3 (l_cur, g_count, l_desc_tab); -- novo u 11g p_ref_cur := DBMS_SQL.TO_REFCURSOR (l_cur); g_record_def := NULL;

8 FOR i IN 1..g_count l_col_type := l_desc_tab(i).col_type; l_col_max_len := l_desc_tab(i).col_max_len; l_col_precision := l_desc_tab(i).col_precision; l_col_scale := l_desc_tab(i).col_scale; IF l_col_type=varchar2_type THEN l_type := 'VARCHAR2(' l_col_max_len ')'; ELSIF l_col_type=number_type THEN l_type := 'NUMBER(' l_col_precision ',' l_col_scale ')'; ELSIF l_col_type = date_type THEN l_type := 'DATE';... END IF; g_record_def := g_record_def ' col_' i ' ' l_type ','; IS l_statement VARCHAR2 (32000); l_statement := ' TYPE record_t IS RECORD (' dyn_fetch.g_record_def '); l_record record_t; FETCH :p_ref_cur INTO l_record; EXIT WHEN :p_ref_cur%notfound;' p_process_def ' CLOSE :p_ref_cur; '; EXECUTE IMMEDIATE l_statement USING p_ref_cur; -- fetch_ref_cur -- dyn_fetch g_record_def := RTRIM (g_record_def, ','); -- describe_columns Procedura fetch_ref_cur dobiva kao ulazne parametre kursor varijablu i definiciju (nekog) procesa, koja (definicija procesa) dinamički opisuje što se radi sa podacima dobivenim kroz kursor varijablu. U ovoj proceduri koristi se relativno kratak, ali prilično složen dinamički PLSQL blok, u kojem se, između ostalog, dinamički deklarira tip podataka record_t, na temelju strukture definirane u globalnoj varijabli g_record_def, koju je (globalnu varijablu) napunila prethodna procedura describe_columns. Taj dinamički kreiran PLSQL blok, zapravo, predstavlja korištenje metode 4 za dinamički SQL (zapravo, u ovom slučaju je to dinamički PLSQL kako je prije rečeno, prirodni dinamički SQL ne podržava metodu 4): PROCEDURE fetch_ref_cur ( p_ref_cur SYS_REFCURSOR, p_process_def VARCHAR2)

9 7. ZAKLJUČAK SUBP sustavi različitih proizvođača mogu se značajno razlikovati po dijalektu SQL jezika i po korištenoj terminologiji. Zbog toga Oracle kursor ne mora biti isto što i kursor u nekom drugom sustavu. No, općenito vrijedi da je kursor neka vrsta logičkog pokazivača na skup redaka koji baza vraća kao odgovor na postavljeni upit. Proceduralni jezik koristi kursor da bi obrađivao redak po redak odgovora. U Oracle bazi "sve je kursor", tj. i DML naredbe, i SELECT naredba koja vraća samo jedan redak - sve su to kursori, ali implicitni. Eksplicitni kursori mogu biti statički ili dinamički. Isto tako mogu biti statičke ili dinamičke kursor varijable (REF kursori), koje predstavljaju pokazivače na kursore. Posebna vrsta kursora, koja je uvijek samo dinamička, je DBMS_SQL kursor. Iako je DBMS_SQL stari paket (još iz baze 7), u bazi 11g dobio je nove mogućnosti, a nove naredbe DBMS_SQL.TO_CURSOR_NUMBER i DBMS_SQL.TO_REFCURSOR omogućavaju da se (indirektno) i sa dinamičkim kursor varijablama koristi metoda 4 iz dinamičkog SQL-a. Literatura: 1 Date, C.J. (2004): An introduction to Database Systems (8.izdanje), Addison-Wesley 2 Date, C.J. (2005): Database in Depth, O'Reilly 3 Date, C.J. (2006): Date on Databases Writings , Apress 4 Date, C.J. (2007): Logic and Databases The Roots of Relational Theory, Trafford Publishing 5 De Haan, L. i Koppelaars T. (2007): Applied Mathematics for Database Professionals, Apress 6 Feuerstein S. i Pribyl B. (2005): Oracle PLSQL Programming (4.izdanje), O'Reilly 7 Kyte, T. (2003): Effective Oracle by Design, McGraw-HillOsborne 8 Kyte, T. (2005): Expert Oracle Database Architecture, Apress 9 Radovan, M. (1993): Baza podataka: Relacijski pristup i SQL, Informator 10 Oracle priručnik 11g Release 2 (2007): Advanced Application Developer's Guide 11 Oracle priručnik 11g Release 2 (2007): Concepts 12 Oracle priručnik 11g Release 2 (2007): PLSQL Language Reference 13 Oracle priručnik 11g Release 2 (2007): PLSQL Packages and Types Reference 14 Oracle priručnik 11g Release 2 (2007): SQL Language Reference Podaci o autoru: Zlatko Sirotić Istra informatički inženjering d.o.o., Pula zlatko.sirotic@iii.hr

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365 Windows 8 Licenciranje, razlike u verzijama Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje Serverski proizvodi Server 2012, System centar 2012, SQL 2012, Sharepoint

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Sberbank Business Online na Mozilla FireFox

Sberbank Business Online na Mozilla FireFox Sberbank Business Online na Mozilla FireFox Verzija 1.6 Srpanj 2016. Sberbank d.d. Stranica 1 SADRŽAJ 1 INSTALACIJA... 2 2 POKRETANJE MOZILLE FIREFOX... 3 2.1 IMPORT SECURITY MODULA... 4 2.2 AUTOMATSKI

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak... Prof. dr. sc. Tomislav Pribanić Izv. prof. dr. sc. Vedran Podobnik Doc. dr. sc. Marija Seder Sveučilište u Zagrebu Fakultet elektrotehnike

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

Informacioni sistemi i baze podataka

Informacioni sistemi i baze podataka Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka Dr Slavica Kordić Milanka Bjelica Vojislav Đukić Rad u učionici (1/2) Baze podataka (db2015): Studentska korisnička šema

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

NEKE OBJEKTNE OSOBINE ORACLE PL/SQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java)

NEKE OBJEKTNE OSOBINE ORACLE PL/SQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java) NEKE OBJEKTNE OSOBINE ORACLE PLSQL 9i JEZIKA (usporedba sa OOPL jezicima C++, Eiffel i Java) SAŽETAK Oracle korporacija je 1997. godine objavila Oracle 8.0 verziju baze i nazvala ju objektnorelacijskom.

More information

DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA

DA LI POSTOJI SAMO JEDNA ISPRAVNA ARHITEKTURA WEB POSLOVNIH APLIKACIJA DA LI POSTOJI SAMO JEDNA "ISPRAVNA" ARHITEKTURA WEB POSLOVNIH APLIKACIJA Zlatko Sirotić, univ.spec.inf. Istra informatički inženjering d.o.o. Pula Stranica 1 Malo marketinga Stranica 2 Autor je (bar neko

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

Uputstvo za podešavanje mail klijenta

Uputstvo za podešavanje mail klijenta Uputstvo za podešavanje mail klijenta 1. Podešavanje Thunderbird mail klijenta 1.1 Dodavanje mail naloga Da biste podesili Vaš mail klijent (u ovom slučaju Thunderbird) da prima i šalje mail-ove potrebno

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

VDSL modem Zyxel VMG1312-B10A/B30A

VDSL modem Zyxel VMG1312-B10A/B30A VDSL modem Zyxel VMG1312-B10A/B30A Default Login Details LAN IP Address http://192.168.2.1 User Name user Password 1234 Funkcionalnost lampica Power lampica treperi kratko vrijeme nakon uključivanja modema,

More information

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2 Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1 Baze podataka 2 Web: http://www.fpmoz.ba/gkraljevic Pitanja, primjedbe,

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

OSNOVE PROGRAMIRANJA

OSNOVE PROGRAMIRANJA OSNOVE PROGRAMIRANJA Struktura aplikacije Visual Basica Za svaku formu u aplikaciji postoji pripadajuci modul forme (.frm) koji sadrži njen programski kod Modul forme sadži event procedure - dijelovi koda

More information

Upute za postavljanje Outlook Expressa

Upute za postavljanje Outlook Expressa Upute za postavljanje Outlook Expressa Prije postavljanja klijenata morate obavezno obaviti prvu prijavu na web mail kako bi aktivirali vaš račun na novom sustavu. Ukoliko niste obavili prvu prijavu, nećete

More information

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja -

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja - ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja - PRIPREMA 5-2015 DVOSMJERNA SERIJSKA KOMUNIKACIJA Paolo Zenzerović, mag. ing. el. Zagreb, 2015. 2 ARDUINO KROZ JEDNOSTAVNE PRIMJERE DVOSMJERNA

More information

Iskočni okviri (eng. popup boxes)

Iskočni okviri (eng. popup boxes) 9. JavaScript 2.dio Iskočni okviri, funkcije, petlje, događaji M. Zekić-Sušac 1 Iskočni okviri (eng. popup boxes) U JavaScriptu mogu se koristiti 3 vrste iskočnih okvira: Upozoravajući okviri (eng. alert

More information

Uvod, varijable, naredbe, petlje

Uvod, varijable, naredbe, petlje 8. JavaScript Uvod, varijable, naredbe, petlje M. Zekić-Sušac 1 Što je JavaScript? JavaScript je najpopularniji skriptni jezik na Internetu kojeg podržavaju svi poznatiji preglednici (Internet Explorer,

More information

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS

Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje. WEB programiranje HTML & CSS Sveučilište u Zagrebu Fakultet strojarstva i brodogradnje WEB programiranje HTML & CSS Autor/i: Juraj Benić 2018 1. Zadatak Kreirati stranicu kojoj će naslov biti Zadatak 1. i veličina teksta 20px te staviti

More information

dr. sc.. Josip Musić Originalne slideove izradio:

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (450) Poglavlje 1 Uvod u računala, Microsoft.NET i VB.NET (dio 2 od 2): Pregled.NET platforme dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo

More information

Blokovska struktura C++ programa ima četiri razine:

Blokovska struktura C++ programa ima četiri razine: Blokovska struktura C++ programa ima četiri razine: 1. razina datoteke (temeljna kompilacijska jedinica) 2. razina definicije (tijela) funkcije 3. razina bloka kontrolnih struktura (sekvenca, iteracija,

More information

Rad sa MySQL bazom podataka

Rad sa MySQL bazom podataka 13. PHP 4.dio Rad sa MySQL bazom podataka M. Zekić-Sušac 1 Što je MySQL? MySQL je relacijska baza podataka. Relacijski model podrazumijeva određenu strukturu podataka, pohranjenu u tablice. Jedna baza

More information

16. Sigurnije programiranje

16. Sigurnije programiranje 16. Sigurnije programiranje 16.1 Pretvorba tipova Pretvorba realnog broja u cijeli broj se može izvršiti naredbama: int i; double d; ili: i = (int) d; i = int(d); U cilju bolje kontrole pretvorbe tipova

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

VIŠESTRUKO NASLJEĐIVANJE - SAN ILI JAVA 8?

VIŠESTRUKO NASLJEĐIVANJE - SAN ILI JAVA 8? VIŠESTRUKO NASLJEĐIVANJE - SAN ILI JAVA 8? SAŽETAK Višestruko nasljeđivanje klasa je dosta dugo vremena neopravdano držano kao kompleksno i nepotrebno. Vjerojatno je jedan od glavnih razloga taj što je

More information

ILM implementacija DWH baza u T-mobile

ILM implementacija DWH baza u T-mobile ILM implementacija DWH baza u T-mobile Bojan Šumljak, PS Consultant Hrvoje Dubravica, PS Head Consultant www.snt-world.com 1 Što je ILM? - information Lifecycle Management praksa primjenjivanja pravila

More information

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133 Binarne hrpe Potpuno binarno stablo binarno stablo u kojem svaki čvor koji nije list ima točno 2 nasljednika. Binarna hrpa potpuno binarno stablo u kojem svaki čvor koji nije list ima veću ključnu vrijednost

More information

TEHNIKA I INFORMATIKA U OBRAZOVANJU

TEHNIKA I INFORMATIKA U OBRAZOVANJU TEHNIKA I INFORMATIKA U OBRAZOVANJU Konferencija 32000 Čačak 9-11. Maja 2008. UDK: 004 : 371 Stručni rad VEZA ZAVISNOSTI ACCESS Momčilo Vujičić 1, Munir Šabanović 2 Rezime: U radu je opisana veza zavisnosti

More information

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB 10 th International Scientific Conference on Production Engineering DEVELOPMENT AND MODERNIZATION OF PRODUCTION KINEMATIČKA ANALIZA MEHANIZAMA INDUSTRIJSKIH ROBOTA KORIŠTENJEM PROGRAMSKOG JEZIKA MATLAB

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. C-Programiranje Lekcija 3.3 Uvod u pointere (pokazivace) This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Sta su to pointeri? Ako postoji tema,

More information

12. Uskladištene procedure (Stored Procedures)

12. Uskladištene procedure (Stored Procedures) 12. Uskladištene procedure (Stored Procedures) Uskladištena procedura je skup SQL iskaza koji su kompajlirani i sačuvani u trenutku njenog kreiranja. Veoma su moćne i preko njih mogu da se izvršavaju sve

More information

Uputa za instaliranje programske potpore za operativni sustav WINDOWS

Uputa za instaliranje programske potpore za operativni sustav WINDOWS ZABA SignErgy Desktop aplikacija Uputa za instaliranje programske potpore za operativni sustav WINDOWS SADRŽAJ 1. UVOD 3 2. PODRŽANI OPERATIVNI SUSTAVI 3 3. PROGRAMSKI PREDUVJETI ZA INSTALACIJU PROGRAMSKE

More information

Numerical Computation

Numerical Computation GNU Octave Numerical Computation vrlo često u tehnici retko stvarni problemi imaju closed-form solution čak i kad imaju, pitanje upotrebljivosti mnogo detalja numerički pristup u početku tretirano kao

More information

IMA NEKA LOŠA VEZA (PRIČA O IN-DOUBT DISTRIBUIRANIM TRANSAKCIJAMA)

IMA NEKA LOŠA VEZA (PRIČA O IN-DOUBT DISTRIBUIRANIM TRANSAKCIJAMA) IMA NEKA LOŠA VEZA (PRIČA O IN-DOUBT DISTRIBUIRANIM TRANSAKCIJAMA) Zlatko Sirotić Istra informatički inženjering d.o.o., Pula e-mail: zlatko.sirotic@iii.hr SAŽETAK Najlakše i najbolje je raditi sa centraliziranim

More information

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine

Sadržaj. Verzija 03/2017 Primjenjuje se od 20. novembra godine Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera 6 8 Cloud usluge 6 9 Aktivni servisi koji nijesu u

More information

Predavanje 10. Odjel za matematiku 1 IP NETWORKING. Detaljnije o domenama, hostovima, socketima, TLSu, SSLu

Predavanje 10. Odjel za matematiku 1 IP NETWORKING. Detaljnije o domenama, hostovima, socketima, TLSu, SSLu Predavanje 10 Odjel za matematiku 1 IP NETWORKING Detaljnije o domenama, hostovima, socketima, TLSu, SSLu Predavanje 10 Odjel za matematiku 2 Imena hostova (posluţitelja) i imena domena Top-level domain

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb Shell programiranje Damir Kirasić Škola otvorenog računarstva FER Zagreb Imenovanje Dijeli pod istim uvjetima 2.5 Hrvatska Shell programiranje UNIX i LINUX shell programi su učinkovito sredstvo za rješavanje

More information

Lekcija 4. Java programiranje sa bazama podataka. dr Svetlana Cvetanović

Lekcija 4. Java programiranje sa bazama podataka. dr Svetlana Cvetanović Lekcija 4 Java programiranje sa bazama podataka dr Svetlana Cvetanović JAVA PROGRAMIRANJE SA BAZAMA PODATAKA Uvod 01 02 03 04 Uvod JDBC Interfejsi Vežba: Preduslovi za pisanje Java koda Zaključak Kreiranje

More information

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a Webmail sistem ima podršku za SSL (HTTPS). Korištenjem ovog protokola sva komunikacija između Webmail sistema i vašeg Web čitača je kriptovana. Prilikom pristupa

More information

Cjenovnik usluga informacionog društva

Cjenovnik usluga informacionog društva Cjenovnik usluga informacionog društva Verzija: 01/2018 Sadržaj 1 Web hosting 3 2 Registracija domena 3 3 Internet marketing 3 4 E mail paketi 4 5 Virtuoz 4 6 Internet Security servis 5 7 Kolokacija servera

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

9. RAD S DATOTEKAMA PODATAKA

9. RAD S DATOTEKAMA PODATAKA Rad s datotekama 7-1 9. RAD S DATOTEKAMA PODATAKA U programiranju se često radi sa skupovima podataka koji se čuvaju na jedinicama perfernih memorija, a koji se organizuju u posebne cjeline koje nazivamo

More information

IV SQL. Slika 1. SQL*Plus ikona. Slika 2. Dijalog provere identifikacije korisnika. Slika 3. Prozor SQL*Plus programa

IV SQL. Slika 1. SQL*Plus ikona. Slika 2. Dijalog provere identifikacije korisnika. Slika 3. Prozor SQL*Plus programa IV SQL SQL (Structured Query Language) je jezik koji je Američki Institut za Nacionalne Standarde (ANSI - American National Standards Institute) prihvatio kao standardni jezik za relacione baze podataka.

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi 2 Uvod u Javu Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi 12 Java i objektno orijentirano programiranje Programski jezik Java Krajem

More information

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije } 1. FUNKCIJE I STRUKTRUE PROGRAMA Složeni problemi lakše se rašavaju ako se podele na manje celine koje mogu nezavisno da se rešavaju. Rešenje celokupnog složenog problema dobija se kombinovanjem rešenja

More information

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA

PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA PRINCIPI SOFTVERSKOG INŽENJERSTVA TIM NAZIV_TIMA SPECIFIKACIJA BAZE PODATAKA ZA PROJEKAT NAZIV_PROJEKTA Veb knjižara - Specifikacija baze podataka 1 10.04.2017. Verzija V 1.0 Datum: 20. mart 2017. Istorija

More information

Uvod u programski jezik

Uvod u programski jezik 2016 Uvod u programski jezik EDIN PAŠIĆ BIHAĆ sejjidin Muhammedin ve âlih lihî ve sellem Sallallâhu 'alâ sejjidinâ Neka je salavat i selam na prvaka Muhammeda a.s. i na njegovu porodicu ii Predgovor Ovo

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

6. SWITCH IZRAZ I PETLJE

6. SWITCH IZRAZ I PETLJE 6.. Switch izraz i petlje 6. SWITCH IZRAZ I PETLJE SADRŽAJ 1. switch izraz (kontrolna struktura) 2. while petlja. 3. do-while petlja. for petlja. Kontrola izvršavanja petlje - break i continue naredbe

More information

Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr. Mijo Mirković" Marino Pereša. JavaScript. Završni rad. Pula, 2015.

Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam Dr. Mijo Mirković Marino Pereša. JavaScript. Završni rad. Pula, 2015. Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr. Mijo Mirković" Marino Pereša JavaScript Završni rad Pula, 2015. Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr.

More information

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi. 1 PANEL komponenta kontejnerska, slična GropBox. Roditeljska komponenta za komp. postavljene na nju. Zajedno se pomeraju. Caption svojstvo za naziv; Alighment pomera svojstvo Caption levo i desno; Align

More information

Variable Neighborhood Descent - VND (Metoda promenljivog spusta)

Variable Neighborhood Descent - VND (Metoda promenljivog spusta) Variable Neighborhood Descent - VND (Metoda promenljivog spusta) Izabrati skup okolina N k, k = 1,..., k max koje će se koristiti za pretragu; Na slučajan način izabrati početno rešenje x X i postaviti

More information

OSVRT NA NOSQL BAZE PODATAKA ČETIRI OSNOVNE TEHNOLOGIJE REVIEW OF NOSQL DATABASES FOUR BASIC TECHNOLOGIES

OSVRT NA NOSQL BAZE PODATAKA ČETIRI OSNOVNE TEHNOLOGIJE REVIEW OF NOSQL DATABASES FOUR BASIC TECHNOLOGIES POLYTECHNIC & DESIGN OSVRT NA NOSQL BAZE PODATAKA ČETIRI OSNOVNE TEHNOLOGIJE REVIEW OF NOSQL DATABASES FOUR BASIC TECHNOLOGIES Aleksandar Stojanović Tehničko veleučilište u Zagrebu Vol. 4, No. 1, 2016.

More information

Backup i Restore C particije ili Windowsa sa NORTON-om

Backup i Restore C particije ili Windowsa sa NORTON-om BRZO KOPIRANJE I RESTAURIRANJE DISKOVA (programski paket Norton SystemWorks) OBJAŠNJENJE Backup i Restore C particije ili Windowsa sa NORTON-om Je li vam se nekada srušio operativni sustav ili pokvario

More information

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu: Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 7-1 Oracle Equijoin and Cartesian Product Prethodna sekcija se bavila upitima preko više od jedne tabele

More information

Algoritmi i programiranje

Algoritmi i programiranje Algoritmi i programiranje Metode Prof. dr. sc. Tonči Carić Sadržaj Definicija metoda Argument i parametar Metode s više parametara Metode bez rezultata Metode s rezultatom Logičke metode Globalne i lokalne

More information

Zadaci za Tutorijal 2.

Zadaci za Tutorijal 2. Dr. Željko Jurić: Tehnike programiranja /kroz programski jezik C++/ Tutorijal 2 Zadaci predviđeni za rad na laboratorijskim vježbama uz pomoć tutora Akademska godina 2013/14 Zadaci za Tutorijal 2. NAPOMENA:

More information

Database Programming with PL/SQL

Database Programming with PL/SQL Database Programming with PL/SQL 12-1 Objectives This lesson covers the following objectives: Recall the stages through which all SQL statements pass Describe the reasons for using dynamic SQL to create

More information

Kodiranje GUI aplikacija u Visual C#

Kodiranje GUI aplikacija u Visual C# Kodiranje GUI aplikacija u Visual C# UVOD Uvod Kodiranje grafičke aplikacije u Visual C#: Ova lekcija se bavi dogadjajima, programiranjem dogadjaja. Daćemo jedan primer event-driven-programming-a, u vidu

More information

Numeričke metode i praktikum

Numeričke metode i praktikum Numeričke metode i praktikum Aleksandar Maksimović IRB / 23/03/2006 / Str. 1 vektori Vektor u 3D prostoru. C: int v1[3]; v1[0]=a;v1[1]=b;v1[2]=c; Fortran: INTEGER V1(3) V1(1)=a V1(2)=b V1(3)=c Skalarni

More information

Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R.

Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. R version 2.13.1 (2011-07-08) Copyright (C) 2011 The R Foundation for Statistical Computing ISBN 3-900051-07-0 Platform: x86_64-pc-mingw32/x64 (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY.

More information

Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu

Primjer ispisuje rečenicu Dobro dosli na brzi tecaj C-a na ekranu Osnove programiranja p. 1/27 Brzi tečaj C-a Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu Programiranje se sastoji od nekoliko koraka - pisanje programa u tekstualnom editoru (joe,

More information

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora). SCHEME Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora). Sheme se uglavnom koristi kao intepreter. Koristit ćemo Petit Chez Scheme. Petite

More information

Što ćete naučiti. Internet općenito HTML CSS XML XHTML Javascript DOM DHTML PHP, ASP.NET

Što ćete naučiti. Internet općenito HTML CSS XML XHTML Javascript DOM DHTML PHP, ASP.NET PHP, ASP.NET Što ćete naučiti Internet općenito HTML CSS XML XHTML Javascript DOM DHTML AJAX jquery PHP ASP.NET Ruby On Rails MS Silverlight FLASH, SMIL, SVG... 2 1 PHP i ASP.NET Uvod u PHP i ASP.NET Samo

More information

dr. sc.. Josip Musić Originalne slideove izradio:

dr. sc.. Josip Musić Originalne slideove izradio: Uvod u programiranje Programiranje 1 (550) Poglavlje 3 Strukture odluka i ponavljanja dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo Žuljević, dipl.. ing. teo.zuljevic@fesb.hr Pregled

More information

JAVA PROGRAMIRANJE 1

JAVA PROGRAMIRANJE 1 JAVA PROGRAMIRANJE 1 1. Uvod 1. Uvod - kako početi programirati u JAVA jeziku Cilj ovog poglavlja je napisati i pokrenuti jednostavnije Java programe. SADRŽAJ 1. O predmetu. 2. Programi i programski jezici.

More information

4.1 Učitavanje podatka tipa string Učitavanje brojčanih vrijednosti Rad sa dinamičkim objektima... 7

4.1 Učitavanje podatka tipa string Učitavanje brojčanih vrijednosti Rad sa dinamičkim objektima... 7 Java zadaci Zadaci 1. Priprema novog projekta... 1 2. Organizacija klasa u fajlove... 2 3. Ispis vrijednosti u konzolni prozor... 3 4. Učitavanje vrijednosti sa konzolnog prozora... 4 4.1 Učitavanje podatka

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 07 - Uvod u PHP 4. svibnja 2015. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv Mašinska vizija Dr Nenad Jovičić 2017. tnt.etf.rs/~mv Linearne 2D geometrijske transformacije 2D geometrijske transformacije Pretpostavka: Objekti u 2D prostoru se sastoje iz tačaka i linija. Svaka tačka

More information

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

public static void main(string []args) { System.out.println(Hello World); /* prints Hello World */ Java Uvod Hello world primer Java program predstavlja skup objekata koji prozivaju jedni drugima metode i tako komuniciraju. Izvorni kod se uvek čuva u datotekama sa ekstenzijom.java. Ispod je predstavljen

More information

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n. Rekurzivne metode Rekurzivan metod je onaj metod koji u nekoj svojoj instrukciji sadrži poziv samog sebe. Svakako prilikom kreiranja rekurzivnog metoda moramo voditi računa da ne dodje do beskonačne rekurzije

More information

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce)

Geant2 - JRA1. Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) Geant2 - JRA1 Upravljanje mjerenjem i performansama mreža (perfsonar, baza multi-domain nadzorne usluge) Danijel Matek (Srce) 21.11.2007, CUC2007, Rijeka Što je to JRA1? Glavni zadatak JRA1 (Performance

More information

MICHAEL JAKŠIĆ SIGURNOST WEB-STRANICA

MICHAEL JAKŠIĆ SIGURNOST WEB-STRANICA MEĐIMURSKO VELEUĈILIŠTE U ĈAKOVCU STRUĈNI STUDIJ RAĈUNARSTVA MICHAEL JAKŠIĆ SIGURNOST WEB-STRANICA ZAVRŠNI RAD ĈAKOVEC, 2015. MEĐIMURSKO VELEUĈILIŠTE U ĈAKOVCU STRUĈNI STUDIJ RAĈUNARSTVA MICHAEL JAKŠIĆ

More information

Informacija, logika i jezici. M. Bagić Babac, M. Kušek. Skripta: Jezici za označavanje sadržaja. Preddiplomski studij. Računarstvo

Informacija, logika i jezici. M. Bagić Babac, M. Kušek. Skripta: Jezici za označavanje sadržaja. Preddiplomski studij. Računarstvo M. Bagić Babac, M. Kušek Preddiplomski studij Računarstvo Telekomunikacije i informatika Informacija, logika i jezici Skripta: Jezici za označavanje sadržaja Ak. g. 2011./2012. Slobodno smijete: dijeliti

More information