Ne možeš da korisitiš varijable unutar stringa dinamičke SQL naredbe. Sad, ja nisam stručnjak za MySQL, na Oracle bazi bi se na mestima gde treba da dođu varijable stavili pozicioni parametri :1, :2, ... pa bi se onda napravio bind sa pravim parametrima. Ne znam kako bi to išlo u MySQL-u.
Sada si stigao, otprilike, onde gde sam ti rekao da je pravi put pre ne znam koliko postova i koliko tema, a to je da za ovakav tip upita treba koristiti dinamički SQL.
Recimo konstrukcija:
WHERE ((n.ime LIKE '", pime,"%') OR pime IS NULL OR pime='')
može sada lepo da se zameni na ovaj način
Code:
q:= UPIT_DO_WHERE_KLAUZULE;
veznik := " WHERE ";
if pime is not null then -- možda u MySql treba pime <> ""
q := concat( q, veznik, "n.ime like '", pime, "%'");
veznik := " AND ";
end if;
...
pa onda izređaš if uslove za prezime zvanje katedru i šta već sve imaš... Uzgred, ovo parče koda koji sam napisao verovatno nije sintaksno ispravno na MySql, shvati to kao pseudokod...
Na ovaj način ćeš konstruisati SELECT naredbu samo sa onim uslovima koji nisu prazni te ćeš dobiti jednostavniji i, verovatno, brži upit.
[Ovu poruku je menjao djoka_l dana 16.07.2010. u 11:45 GMT+1]
[Ovu poruku je menjao djoka_l dana 16.07.2010. u 11:46 GMT+1]