Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-interfaces by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group