Pomoc oko stored procedure

Mirelica

Početnik
Poruka
25
Treba da napisem stored proceduru za Interbase. To je select procedura, koja ce imati dosta parametara u where klauzuli. U zavisnosti koji parametri su prosledjeni zaglavlju procedure, u telu procedure se sklapa upit. Na primer:
Ako je popunjeno ime pravi se sledeci upit:
select * from clanovi where Ime='Pera'
Ako je popunjeno ime i prezime
select * from clanovi where Ime='Pera' and prezime='Peric'
ako nista nije popunjeno samo
select * from clanovi
Dakle ovih parametara moze da bude i pedeset.Moram da proveravam koji parametri su popunjeni, pa na osnovu toga da 'sklopim' upit i to u SQL-u, a ne da pisem upite za sve moguce kombinacije. Da li imate neku ideju?
 
A zasto bas mora da bude stored procedura?

Mozes dinamicki da kreiras upit u kodu, na primer:

imafilter boolean;
imafilter :=false;
SQLstring :=" SELECT * from clanovi "
if ImeEditBox.text<>"" then
begin
if imafilter = false then SQLString=SQLString+" WHERE ( ";
imafilter :=true;
SQLString=SQLString+"( Ime =" + ImeEditBox.text +")";
end
.
.
.
i tako za svako polje, obrati paznju na otvaranje i zatvranje zagrada.
 
Ako mora u proceduri, onda ovako:

select *
from clanovi
where (ime = ime_param or ime_param is null)
and (prezime = prezime_param or prezime_param is null)
and...

ime_param je ulazni parametar. Samo ovo zna da bude sporo za veliki broj zapisa.
 

Back
Top