Обсуждение: Create functions using a function

Поиск
Список
Период
Сортировка

Create functions using a function

От
Gianvito Pio
Дата:
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 /> 

Re: Create functions using a function

От
Petru Ghita
Дата:
-----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-----



Re: Create functions using a function

От
Jasen Betts
Дата:
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;