[ MarkoBalkan @ 05.08.2007. 21:06 ] @
jel mi moze netko objasniti kad se koriste funkcije i cemu sluze, a kad storne procedure!
do sada sam sve radio sa sql upitiva,tako da nemam pojma.
dali se uopce i moraju koristiti ili se sve moze napraviti i bez toga?
[ chachka @ 05.08.2007. 21:48 ] @
Stored procedure pomažu u razdvajanju slojeva informacionog sistema na db sloj i aplikativni sloj.

Recimo da na projektu rade dve osobe: aplikativni programer i DB administrator. Tada se njih dvojica dogovore šta neki upit treba da radi. DB administrator sastavi upit i stavi ga u stored proceduru. Programer poziva tu proceduru i ne mora da zna kako upit izgleda.

U čemu je poenta. Aplikacija se pusti u rad i DB administrator nadgleda rad baze. Broj podataka u bazi raste, a onaj upit postaje sve sporiji i sporiji. DB administrator pronadje način da celu stvar ubrza, ali mora da promeni rad samog upita (ne i rezultat). Pošto se upit nalazi u stored proceduri, DB admin može da ga zameni, a da se ne pipne ni jedno slovo source-a aplikacije! Programer nemora ni da zna da je DBA menjao upit.

Ako su programer i DBA ista osoba onda i nema puno smisla koristiti stored procedure.
[ misk0 @ 06.08.2007. 08:09 ] @
Ne bih se bas slozio da to ima toliko veze sa osobama. Vishe je podjela na ono sto si prvo rekao - App - DB layere. Ako je potrebno uraditi neku vecu obradu podataka mnogo je bolje to raditi u bazi a ne ucitavati te podatke u aplikaciju, obradjivati i vracati nazad u bazu. Pogotovo ako je rijec o velikoj kolicini podataka.
[ mb_sa @ 06.08.2007. 08:39 ] @
Vjerujm da si korstio bult-in Mysql funkcije (UPPER(), SUM(), ...),
tako da bi ti optrilike trebala biti jasna upotreba funkcija (proracuni, formatianje i manipulacija nad podacima).

Koa i u mnogim programskim jezicima, tako i kod mysql funkcija, fukcija mora vratiti samo jednu vrijednost,
dok Sotred procedure mogu vratiti 0 ili orgorman set rezultata.

U principu, razlika izmedju mysql funkcija i procedura je u nacinu pozivanja i šta one vraćaju (već rečeno). Procedure se pozivaju
eksplicitno sa CALL komandom, dok se funkcije pozivaju sa INSERT, SELECT ili UPDATE izrazima!

I recimo jedna od prednosti korištenja stored procedura je što omogućava korištenje multiple upita "kroz jedan put" do baze,
što bi značilo se se moze smanjiti traffic izmedju klijenta i baze, što nekada moze biti znacajno za citav sistem.

Također, treba paziti i na upotrebu stored procedura koja ima svoje mane, a jedan od njih je što iste stavljaju veće opterećenje na DB server,
procesor i memoriju (u biti nisam ovo nikada testirao, tako da ne mogu govoriti iz iskustva).