PL/SQL , pokazivači

poruka: 8
|
čitano: 3.441
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
PL/SQL , pokazivači

Uhvatio sam se učenja pl/sql-a i naletio na pokazivače... Ok, našao sam definiciju što su oni i tako ali nikako da dokučim čemu služe,  tj. na nekakvom konkretnom primjeru???

Hvala!

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: PL/SQL , pokazivači
škanjac kaže...

Uhvatio sam se učenja pl/sql-a i naletio na pokazivače... Ok, našao sam definiciju što su oni i tako ali nikako da dokučim čemu služe,  tj. na nekakvom konkretnom primjeru???

Hvala!

 

Da ne mislis mozda na cursore? 

14 godina
neaktivan
offline
Re: PL/SQL , pokazivači

Zar nisu cursori pokazivači? Da, na to mislim

 

14 godina
neaktivan
offline
Re: PL/SQL , pokazivači

Mi ih na FER-u nismo tako zvali. Pokazivaci su pointeri ( C/C++ ). 

 

Evo ti jedan primjer di sam koristio kursore u diplomskom. Ko ti ne bude jasno pitaj.

 

--vraca dnevnu potrosnju ostvarenu treninzima   

 function vrati_dnevnu_potrosnju return number

 is

 v_potrosnja number default 0;

 CURSOR c_myCursor is

   select   t.datum,

     sta.trajanje,

     v.met,

     s.tezina 

   from   vjezba v,

     stavka_treninga sta,

     trening t,

     korisnik k,

     status s

   where   s.status_id=t.status_id

   and    s.korisnik_id=k.korisnik_id

   and    t.korisnik_id=k.korisnik_id

   and    t.trening_id=sta.trening_id

   and    sta.vjezba_id=v.vjezba_id

   and    k.korisnik_ime = v('APP_USER')

   and    t.datum = trunc(to_date(sysdate), 'DDD');

 

begin

for r_myCursor in c_myCursor LOOP

   v_potrosnja := v_potrosnja + ((r_myCursor.trajanje * r_myCursor.met * 3.5 *r_myCursor.tezina) / 200);

end loop;

 

return round(v_potrosnja);

 

end vrati_dnevnu_potrosnju;

14 godina
neaktivan
offline
Re: PL/SQL , pokazivači

Imaš pointere i cursore, jedni i drugi se mogu prevesti kao pokazivači. Mene zanimaju cursori {#}

Ok, koja je sada uloga cursora u ovoj funkciji? Šta se to nije moglo napraviti recimo običnim upitom or whatever? {#}

 

14 godina
neaktivan
offline
Re: PL/SQL , pokazivači

a kako bi drugacije obradio ove podatke nego preko kursora? Mozes ti dohvatiti neki redak u tablici, ali sto ces dalje s njime?

kursor mozes shvatiti kao neko polje u koje spremis varijable koje si dohvatio kroz jednu iteraciju petlje.

 

imas to super objasnjeno u knjigi: Oracle® PL/SQL™ by Example FOURTH EDITION

17 godina
offline
PL/SQL , pokazivači

BTW. Ovo što ti je kolega pokazao, samo je jedna vrsta CURSOR-a, tj. jedan od načina kako da deklariraš CURSOR.

 

Ovaj kursor se mogao i ovako definirati (ne bi trebala deklaracija na vrhu)

 

declare

 --neke varijable deklarirane  

begin

for r_myCursor in (select   t.datum,

     sta.trajanje,

     v.met,

     s.tezina 

   from   vjezba v,

     stavka_treninga sta,

     trening t,

     korisnik k,

     status s

   where   s.status_id=t.status_id

   and    s.korisnik_id=k.korisnik_id

   and    t.korisnik_id=k.korisnik_id

   and    t.trening_id=sta.trening_id

   and    sta.vjezba_id=v.vjezba_id

   and    k.korisnik_ime = v('APP_USER')

   and    t.datum = trunc(to_date(sysdate), 'DDD'))

LOOP

   v_potrosnja := v_potrosnja + ((r_myCursor.trajanje * r_myCursor.met * 3.5 *r_myCursor.tezina) / 200);

end loop;

 

Isto tako imaš implicitne i eksplicitne(ovaj gore, tj oni koji se odnose na SELECT) CURSOR-e itd. Opet imaš dinamičke CURSOR-e (malo drugačije se definiraju od ovih gore). itd..

 

Googlaj malo ili gledaj na oracle stranici

 

http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/cursor_declaration.htm (kreni od ovog).

 

P.S. Pl ti je programski dio Oracle-a (najlakše objasniti), gdje moraš nekako pristupiti do recorda (ne možeš direktno). Do record-a pristupaš preko SELECT-ova. Ako ti neki od SELECT-ova vraća više od jednog reda (jedan red možeš spremiti u varijable) onda su ti potrebni cursori (kroz koje se možeš LOOP-ati kao kroz polje u bilo kojem drugom jeziku). I da ove CURSOR-e ne zovu pokazivačima (valjda da se ne miješaju sa POINTER-ima koji se koriste u C/C++).

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
Poruka je uređivana zadnji put pon 27.8.2012 14:00 (dado2202).
 
0 0 hvala 0
14 godina
neaktivan
offline
PL/SQL , pokazivači

Hvala kolege! {#} nakon par riješenih primjera je sve dobilo smisla

 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice