sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan opretter jeg en indlejret funktion i PL/pgSQL?

Prøv det:

CREATE OR REPLACE FUNCTION outer() RETURNS void AS $outer$
DECLARE s text;
BEGIN
  CREATE OR REPLACE FUNCTION inner() RETURNS text AS $inner$
  BEGIN
    RETURN 'inner';
  END;
  $inner$ language plpgsql;

  SELECT inner() INTO s;
  RAISE NOTICE '%', s;

  DROP FUNCTION inner();
END;
$outer$ language plpgsql;

I postgres 9.5 SELECT outer(); udgange

 psql:/vagrant/f.sql:14: NOTICE:  inner

EDIT:hvis du ikke dropper den indre funktion i slutningen af ​​den ydre funktion, vil den forblive synlig for resten af ​​databasen.



  1. MySQL indstiller secure-file-priv til flere mapper

  2. MySQL Tutorial – Håndtering af MySQL-serverlogfiler:Roter, komprimer, bevar og slet

  3. 5 gode grunde til at downloade og bruge Microsoft Access-skabeloner

  4. Mutationstabel i Oracle 11 forårsaget af en funktion