[ Bongo_zg @ 30.05.2008. 05:03 ] @
| ako postoji package cursor, da li je dobro imati definiciju varijable u koju se sprema isto na razini packagea?
npr. ako imamo na razini packagea cursor tipa:
cursor c_tablica1(cp_id in number) is
select * from tablica where id=cp_id;
da li je best practice da u nastavku pise:
cv_tablica1 c_tablica1%rowtype;
ili bi se cursor varijabla trebala biti na razini packagea ili razini pojedine procedure/funkcije?
|
[ djoka_l @ 30.05.2008. 11:52 ] @
Sve zavisi od toga šta želiš da postigneš.
Na primer, ako ćeš kurzor koristiti u for petlji:
for c in c_tablica(bla_bla) loop
-- ostatak koda
null;
end loop;
tada je varijabla c automatski definisana i njen scope je u loop, tako da varijabla na nivou paketa ne treba.
Drugo, definisanje varijabli na nivou paketa vodi u "prljavo" programiranje, tj. funkcije ili procedure imaju "side" efekat. Tvoje funcije i procedure bi trebalo da vraćaju izlazne parametre kroz OUT promenljive ili izlaznu vrednost funkcije, a ne treba da petljaju po globalnim promenljivima (tako postaje vrlo teško da se pronađe greška).
Znači, na nivo paketa stavi samo one varijable koje su zaista globalne za paket.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.