Обсуждение: Create functions using a function
Hi all,<br />is there a way to define functions and/or triggers in a function?<br /><br />For example, can I create a functionthat takes an argument and defines a function that has the name passed as argument to the first function?<br /><br/>Something like this .....<br /><br />CREATE FUNCTION test (name varchar) RETURNS VOID AS $$<br />BEGIN<br /> CREATE FUNCTION name ( ) (here "name" should be expanded to the variable content) RETURNS .... <br /> ...<br/> <br />END<br />$$<br /><br />Is there a way to do this? Thanks<br /><br />
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Yes, it's possible. Use EXECUTE. There is one example under "Example 38-9. Porting a Procedure from PL/SQL to PL/pgSQL" http://www.postgresql.org/docs/8.4/static/plpgsql-porting.html Also have look in: http://www.postgresql.org/docs/8.2/static/plpgsql-statements.html under "37.6.5. Executing Dynamic Commands" Petru Ghita Gianvito Pio wrote: > Hi all, is there a way to define functions and/or triggers in a > function? > > For example, can I create a function that takes an argument and > defines a function that has the name passed as argument to the > first function? > > Something like this ..... > > CREATE FUNCTION test (name varchar) RETURNS VOID AS $$ BEGIN CREATE > FUNCTION name ( ) (here "name" should be expanded to the variable > content) RETURNS .... ... > > END $$ > > Is there a way to do this? Thanks > -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkuMQdYACgkQt6IL6XzynQSjoQCffcPZ2W69uy3wpGlkhkraQm2a p0IAnA+8njdC6nAdpdhaTg/M9QEohYVb =/tvu -----END PGP SIGNATURE-----
On 2010-03-01, Gianvito Pio <pio.gianvito@gmail.com> wrote: > --001485f44fc07594a40480c43c01 > Content-Type: text/plain; charset=ISO-8859-1 > > Hi all, > is there a way to define functions and/or triggers in a function? assuming plpgsql: execute > For example, can I create a function that takes an argument and defines a > function that has the name passed as argument to the first function? > > Something like this ..... CREATE FUNCTION test (name text) RETURNS VOID AS $$BEGIN EXECUTE 'CREATE FUNCTION '||quote_ident(name)|| ... END $$ LANGUAGE PLPGSQL;