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
Marc Hanisch [ Mi, 12 März 2008 09:01 ] [ ID #1928507 ]

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
andreas.kretschmer [ Mi, 12 März 2008 11:54 ] [ ID #1928508 ]

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
Marc Hanisch [ Mi, 12 März 2008 14:42 ] [ ID #1928509 ]
Datenbanken » gmane.comp.db.postgresql.german » Dynamisches Select Statement in Funktion

Vorheriges Thema: == WöchentlicherPostgreSQL Newsletter - 16.März2008
Nächstes Thema: Themawechsel: Test-Account/-Datenbank