Dynamisches Select Statement in Funktion
Hallo,
ich habe eine Funktion geschrieben, die, je nach Argument welches sie
übergeben bekommt, eine Abfrage generiert. Bsp.:
CREATE OR REPLACE FUNCTION reference(char, char) RETURNS char
AS 'SELECT substring($1 from ''[(].+,(.+)[)]'') FROM substring($1 from
''(.+)[(].+[)]'') WHERE substring($1 from ''[(](.+),.+[)]'') =3D $2'
LANGUAGE SQL
RETURNS NULL ON NULL INPUT;
Die Funktion wird wie folgt aufgerufen:
SELECT reference('schema.tabelle(id_row,name_row)', 1);
Innerhalb der Funktion wird also folgende Abfrage erstellt:
SELECT name_row FROM schema.tabelle WHERE id_row =3D 1;
Allerdings funktioniert dies nicht wie angedacht, da PostgreSQL name_row
als String interpretiert, nicht als Spalte. Gibt es hierfür einen
Workaround, oder laufe ich da generell in die falsche Richtung?
Danke für eure Hilfe,
Marc
--
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein [at] postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Dynamisches Select Statement in Funktion
am Wed, dem 12.03.2008, um 9:01:03 +0100 mailte Marc Hanisch folgendes:
> Hallo,
>
> ich habe eine Funktion geschrieben, die, je nach Argument welches sie
> übergeben bekommt, eine Abfrage generiert. Bsp.:
>
> CREATE OR REPLACE FUNCTION reference(char, char) RETURNS char
> AS 'SELECT substring($1 from ''[(].+,(.+)[)]'') FROM substring($1 from
> ''(.+)[(].+[)]'') WHERE substring($1 from ''[(](.+),.+[)]'') =3D $2'
> LANGUAGE SQL
> RETURNS NULL ON NULL INPUT;
Du wirst pl/pgsql verwenden und dort mit execute arbeiten müssen.
http://www.postgresql.org/docs/current/interactive/plpgsql-s tatements.htm=
l#PLPGSQL-STATEMENTS-EXECUTING-DYN
Andreas
--
Andreas Kretschmer
Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
--
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein [at] postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein
Re: Dynamisches Select Statement in Funktion
--- Original-Nachricht ---
Absender: A. Kretschmer
Datum: 12.03.2008 11:54 Uhr
> Du wirst pl/pgsql verwenden und dort mit execute arbeiten müssen.
>
> http://www.postgresql.org/docs/current/interactive/plpgsql-s tatements.h=
tml#PLPGSQL-STATEMENTS-EXECUTING-DYN
>
>
> Andreas
>
Hallo und Danke! EXECUTE liefert das Ergebnis genaus so wie ich es will!
Viele Grüße,
Marc
--
Sent via pgsql-de-allgemein mailing list (pgsql-de-allgemein [at] postgresql.o=
rg)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein