Search Postgresql Archives

Re: syntax question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/3/21 12:01 PM, Bruce Momjian wrote:
On Thu, Jun  3, 2021 at 08:58:03PM +0200, Marc Millas wrote:
Hi,

within a function, I want to create another function.
no pb.
but if I write:
declare bidule text;
begin
bidule:='myfunc';
create function bidule() ...


it does create a function named bidule and not myfunc.
so I am obviously missing something too obvious.

You can't create functions inside of functions;  same for procedures.


Sure you can:

CREATE OR REPLACE FUNCTION public.test_fnc()
 RETURNS void
 LANGUAGE plpgsql
AS $function$
DECLARE
     bidule text;
BEGIN
bidule:='myfunc';
EXECUTE 'create function ' || bidule || '() RETURNS void language plpgsql AS $fnc$ BEGIN END; $fnc$ ';
END;


$function$

select test_fnc();
 test_fnc
----------

 \df myfunc
                        List of functions
 Schema |  Name  | Result data type | Argument data types | Type
--------+--------+------------------+---------------------+------
 public | myfunc | void             |                     | func


Whether you should is another question.


--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux