psani funkce v pgsql
Pavel Stehule
stehule na kix.fsv.cvut.cz
Středa Listopad 20 07:02:38 CET 2002
V Perlu a Pythonu nevim, ale rekl bych, ze ne, jelikoz
pro pristup k tabulkam pouzivaji SPI, pricemz se dotaz
konstruje dynamicky. V C se pouziva SPI, takze jako dotaz
datavate string. Jsou tam somozrejme uplne jine konstrukce.
Neni problem napsat v C funkci, ktera ma parametr nazev
tabulky a vraci celou tabulku.
kouknete se na
http://stehule.fsv.cvut.cz/~stehule/postgres04.txt
In article <200211191922.04856.dev na b2bexpander.com>, Jiri Chaloupka wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Dne út 19. listopad 2002 17:08 jste napsal(a):
>> Takze zasadni chyba je, ze se snazite parametrizovat
>> dotaz na spatnem miste. Parametr muzete pouzit pouze
>> jako konstantu ve vyraze, nikoliv jako nazev tabulky
>> neno sloupce.
>
> tak tot mi uteklo, v tom byl zakopan pes ...
> Plati toto omezeni i pro funkce v jinem jazyce (perl, c)?
>
>>
>> Mozny reseni, pouzijete if a jeste tam mate chybne
>> naplneni vracene promenne a mozna se tomu taky nemusi
>> libit duplicita promennych.
>>
>> declare r int;
>> begin
>> if $1 = ''tab1'' then
>> select into r max(id) from tab1;
>> elsif ....
>> end if;
>> return r;
>> end;
>
> toto bohuzel nejde v tomto konkretnim pripade z duvodu zachovani obecnosti
>
>>
>> neco by se jeste nechalo vymyslet jako dynamicky
>> dotaz EXECUTE ''SELECT ...'' || $1, ale nevim
>> jestli Vam to naplni promennou.
>
> nenaplni
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.0.7 (GNU/Linux)
>
> iD8DBQE92oFMvYSoX+V7iM0RAnpdAKCD0Kvo+GFOtqqdVRKqvD8StEoxzQCg0eSt
> kL+vu8wz68yD5ZC678pHhpc=
> =swc9
> -----END PGP SIGNATURE-----
>
Další informace o konferenci Test