kao sto rekoh - stored procedura ne moze da vrati rezultat u tabelarnom obliku .. to mislim bukvalno tako kako sam napisao ... dakle - ne moze, stored procedura ima in i out parametre i to je to .. ne postoji "tabela" kao parametar.
Ono sto moze da se koristi da bi sp vratila tabelu je da u sp kreiras temp tabelu (create temporary table t1 ...) i onda nju napunis sa rezultatom a onda posle poziva procedure dropnes istu .. (ili na pocetku procedure stavis sam da je prvo dropne ako postoji) ..
to sto ti verovatno radis je ..
Code:
create ...
...
begin
...
select a,b,c from t1;
...
i tebi mysql cli dampuje sadrzaj onog selekta na ekran odnosno sa raznim klijentima mozes "na razne fore" da "uvatis" taj izlaz iz stored procedure i da ga vratis aplikaciji ....
to NIJE REZULTAT te procedure, to je "debug output" te procedure koji ti "na foru" hvatas i koristis u aplikaciji ... sto je najbolje, taj isti debug output mozda sutra nece raditi .. dakle mi mozemo sad da odlucimo da u sledecoj MINOR verziji ukinemo da bilo koji konektor moze da pokupi ove vrednosti iz debug izlaza sp-a ... i tebi ce da prestane da radi aplikacija!!! (necemo posto ima gomila ljudi koji su vezali svoje aplikacije za mysql na tako pogresan nacin ali to je sad druga prica)...
sto se tice "kesiranja exec plan-a" ... ako ti radis nesto tipa
Code:
insert into t1 (a,b,c) values (1,2,3);
insert into t1 (a,b,c) values (4,5,6);
insert into t1 (a,b,c) values (7,8,9);
insert into t1 (a,b,c) values (10,11,12);
...
svaki upit ce trajati isto vreme
ako uradis
Code:
prepare statement "insert into t1 (a,b,c) values (?,?,?)"
set ... ; exec ps;
set ... ; exec ps;
set ... ; exec ps;
set ... ; exec ps;
...
u zavisnosti od konektora ili ce prepare da radi neko vreme i onda ce svaki exec prepared statementa da radi dosta brze nego svaki onaj insert od malopre ( i svi ce trajati isto) ili ce prvi insert biti sporiji a onda ce sve ostali biti brzi (i trajati isto)
a ako pak uradis
Code:
insert into t1 (a,b,c) values (1,2,3), (4,5,6), (7,8,9), (10,11,12)...;
ovaj insert ce trajati krace nego zbir i u prvoj i u drugoj varijanti
no to nema apsolutno nikakve veze sa sp-om, ako to radis unutar sp sve se identicno ponasa, dakle ako u sp radis prepare pa exec on kesira exec plan zbog prepared - ne zbog sp ... prepare mozes da odradis i iz svakog normalnog konektora ...
takodje, ako radis samo jedan insert (ili select ili ...) prepare ce biti sporiji nego da ga ne koristis
nadam se da sam bio jasan ..
btw za "rezultat" sp-a ... sta je rezultat ako imas:
Code:
..
begin
...
select 1,2,3;
...
select "A", "b", "c", "d", "e", "f";
...
select "error";
...
select 123,7;
...
??