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;