Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Da li je moguće izvući iz procedure resultset i parametre?

[es] :: MySQL :: Da li je moguće izvući iz procedure resultset i parametre?

[ Pregleda: 1179 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Da li je moguće izvući iz procedure resultset i parametre?22.08.2010. u 15:06 - pre 167 meseci
Izvinjavam se što postavljam duple teme ali mi je potreban odgovor a nisam ga dobio u prethodnom podforumu. Doduše gvozden je rekao da ne može ali rekoh da pitam i ovde, možda je neko upućen.

Evo i pitanja:
Imam proceduru koja vraća select upit (tj. resultset u php). Ta procedura ima out parametar. Da li je moguće da pozovem proceduru, da uzmem rekordset i da onda izvučem iz procedure out parametre? Može li neko da mi pomogne sa ovim?

Ne treba da mi neko napiše skriptu koja ovo radi već mi je potrebna samo informacija da li je ovako nešto moguće. Ne znam php a radim na nekom mysql projektu pa me interesuje zbog logike aplikacije da li ovo može da radi na ovakav način.

Kompletna tema se nalazi na adresi http://www.elitesecurity.org/t407177-0#2674869


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li je moguće izvući iz procedure resultset i parametre?22.08.2010. u 15:20 - pre 167 meseci
PROCEDURA je "podprogram" koji izvrsava skup naredbi u odnosu na ulazne parametre i koji ne vraca nikakav rezultat
FUNKCIJA je "podprogram" koji izvrsava skup naredbi u odnosu na ulazne parametre i vraca rezultat

dakle mozes da uradis

a = f(b) + c;

ako je f() funkcija

ali ne mozes da uradis

a = p(b) + c;

ako je p() procedura.

mysql definise "izlazne parametre" za proceduru sto su "recimo pointeri" na externe varijable te moze da se proceduri prosledi varijabla u koju ce procedura upisati neku vrednost. I dalje procedura "ne vraca rezultat" vec samo popunjava vrednosti nekih varijabli.

Na zalost, za sada, mysql procedura moze da radi samo sa jednostavnim varijablama, dakle ne moze da popuni NIZ.

Kada ti u proceduri uradis

SELECT 10;

To 10 nije nikakav rezultat, to sto ti tu desetku pokupis na "ovu i onu foru" moze sutra da prestane da radi kada upgradeujes mysql!!!

Jedini validan nacin da iz procedure aplikaciji prosledis niz bi bio da u proceduri kreiras temporary tabelu a onda po izlasku iz procedure tu temporary tabelu procitas (sa select iz tvog klijenta) i onda tabelu dropnes.

Dakle resenje tvog pitanja je "pravilno"

Procedura koja ima OUT parametar
Procedura koja kreira temp tabelu

ti iz klijenta uradis

CALL procedura(a);
SELECT @a;

pa ako je a ovoliko onda

SELECT * from TMP1;
DROP TABLE TMP1;

a ako je a onoliko onda samo

DROP TABLE TMP1;

tj. ako ti procedura upise u a onoliko onda mozda nije ni kreirana TMP1 pa ne moras da je brises ...

a da ne bi razmisljao da li je klijent inteligentan da obrise sam tabelu u proceduru na pocetak stavis jedno DROP TEMPORARY TABLE IF EXISTS TMP1;


 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li je moguće izvući iz procedure resultset i parametre?22.08.2010. u 15:27 - pre 167 meseci
sto se tice pitanja sa drugog foruma:
Citat:

Znači proverim sesiju preko poziva CALL SP_SESIJA_PROCEDURA. Ova procedura proveri da li imam prava pristupa i ako imam postavi p_status=0. Ja to iz php-a pročitam i ako je p_status=0 onda pročitam resultset tj. ono što daje upit SELECT naziv FROM KATEDRA;


ovo je opet pogresan koncept. ako imas proceduru koja "vadi podatke" i proceduru koja "pita da li smes da dobijes podatke" - zasto onda proveru radis na php-u ? procedura koja vadi podatke treba da proveri da li imas ili nemas pravo da dobijes podatke pa da ti ih da ili ne. U tvom slucaju klijent moze da uradi sledece

1. pita da li sme da pristupi podacima
2. dobije odgovor da ne sme, izignorise taj odgovor
3. pristupi podacima


 
Odgovor na temu

biske86
Ivan Biševac
Zubin Potok

Član broj: 62435
Poruke: 979
*.dynamic.isp.telekom.rs.

Sajt: biske.rs


+39 Profil

icon Re: Da li je moguće izvući iz procedure resultset i parametre?22.08.2010. u 17:26 - pre 167 meseci
Citat:
bogdan.kecman: sto se tice pitanja sa drugog foruma:


ovo je opet pogresan koncept. ako imas proceduru koja "vadi podatke" i proceduru koja "pita da li smes da dobijes podatke" - zasto onda proveru radis na php-u ? procedura koja vadi podatke treba da proveri da li imas ili nemas pravo da dobijes podatke pa da ti ih da ili ne. U tvom slucaju klijent moze da uradi sledece

1. pita da li sme da pristupi podacima
2. dobije odgovor da ne sme, izignorise taj odgovor
3. pristupi podacima


Ovo je pravilan pristup pošto mysql nema baš moćan jezik kao što ima orakl PL/SLQ. Ovo si mi predlagao na početku u tamo nekoj temi ali ja nisam poslušao pošto mi je ovako sa izlaznim parametrom bilo prirodnije. Ali šta da se radi, idemo dalje.

Nego nisam pročitao da si eksplicitno naveo da u mysql-u ne može da se odradi ovo što je postavljeno u nalovu teme. Molim te potvrdi mi.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Da li je moguće izvući iz procedure resultset i parametre?22.08.2010. u 18:18 - pre 167 meseci
explicitno - mysql ne podrzava vracanje rezultata osim kroz izlazni parametar.

sada, sta mozes da izvadis "na foru", zavisi od trenutne verzije konektora i aplikacije koja implementira taj konektor kao i od verzije servera ... sto znaci, ako ti ne radi znaci da u tvojoj kombinaciji ne moze, u nekoj drugoj kombinaciji mozda proradi. generalno bi trebalo da mozes da u istoj konekciji posaljes jos jedan upit sa select @a; i da pokupis vrednost out parametra ... ali toliko stvari u tom celom konceptu nije u redu da je to zastrasujuce. sve i da si na oraklu sa pl/sql-om nista to ne bi trebalo drugacije da se radi... jedino deo oko preuzimanja niza ne bi morao da radis kroz temp tabelu, ali i dalje osnvni koncept kako se to radi u oraclu, mysql-u, pgsql-u .. koncept je isti, samo se sintaksa eventualno razlikuje - tvoj koncept je pogresan - ili ti je logika na bazi ili na klijentu, zamena select-ova sa call-ovima nema nikakvog smisla
 
Odgovor na temu

[es] :: MySQL :: Da li je moguće izvući iz procedure resultset i parametre?

[ Pregleda: 1179 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.