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