dynamic functions

From: "Robert Wimmer" <seppwimmer(at)hotmail(dot)com>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: dynamic functions
Date: 2005-05-05 21:49:44
Message-ID: BAY10-F1223F44B77E5F515A0B5AD01A0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

hi ,

is there any way to build "dynamic functions" in plpgsql ?

my problem is, i have a table defining attributes like

CREATE TABLE attribute.attribute (
name NAME PRIMARY KEY,
descr VARCHAR(256),
regex VARCHAR(50) NOT NULL,
minlen INTEGER NOT NULL DEFAULT 0,
maxlen INTEGER NOT NULL DEFAULT 64
-- validate NAME // not implemented
);

and a function like

CREATE OR REPLACE FUNCTION
attribute.match(TEXT,TEXT,BOOLEAN) RETURNS INTEGER AS '

.. check the value (against the regex etc) ..

END; ' LANGUAGE plpgsql

in some cases i would like to check the values also against a function for
example

CREATE FUNCTION attribute.check_range(TEXT) RETURNS INTEGER AS '
BEGIN
IF $1 ... THEN RETURN -1; END IF;
RETURN 0;
END; '
....

so that i can do the following in my match function

CREATE OR REPLACE FUNCTION
attribute.match(TEXT,TEXT,BOOLEAN) RETURNS INTEGER AS '

.. check the value (against the regex etc) ..
IF attrib.validate NOT IS NULL THEN
cmd := atrib.validate || ''('' $1 '')'' ||;
-- ??
-- EXECUTE ''SELECT '' || cmd; // SELECT does not work in EXECUTE
-- ??
END IF

END; ' LANGUAGE plpgsql

is there a way to get a result back from EXECUTE ?

i hope you can understand my description of the problem
i am using postgresQL 7.4 on debian

thanx

sepp

_________________________________________________________________
Recherchieren Sie auf eigene Faust mit der wohl besten Suchmaschine im Netz.
http://search.msn.at/

Responses

Browse pgsql-interfaces by date

  From Date Subject
Next Message Sean Davis 2005-05-05 22:30:40 Re: dynamic functions
Previous Message Greg Sabino Mullane 2005-05-05 01:10:48 Re: [INTERFACES] DBD::Pg and .pgpass