On Tuesday, January 16, 2024, Rossana Ocampos <rocam...@bry-it.com> wrote:
> *Hello ,* > > *I have a query about creating nested functions in PostgreSQL.* > > *I am currently using PostgreSQL 15 and I am trying to create a nested > function with the following structure:* > > *CREATE OR REPLACE FUNCTION external_function ()* > > *RETURNS void AS $$* > > *DECLARE* > > *external_variable;* > > > > * -- Define the internal function* > > * FUNCTION internal_function ()* > > * RETURNS void AS $$* > > * DECLARE* > > * internal_variable INT;* > > * BEGIN* > > * -- Internal function code* > > * internal_variable:= 10;* > > * RAISE NOTICE 'Internal Variable: %', internal_variable;* > > * END;* > > * $$ LANGUAGE plpgsql;* > > *BEGIN* > > * -- External function code* > > * external_variable:= 5;* > > * RAISE NOTICE 'External variable: %', external_variable;* > > > > * -- Call internal function* > > * PERFORM internal_function ();* > > *END;* > > *$$ LANGUAGE plpgsql;* > > > > However, I get an error, and I can't compile the function. > > *Thank you very much for your help* > > You did nested dollar quoting wrong; and I don’t see the word create where you try to define the function inside the outer function. You are probably better off just defining two functions independently anyway, there is minimal benefit to having on function define another in PostgreSQL, there are no closures. David J.