sql >> Databáze >  >> RDS >> PostgreSQL

Jak vytvořím vnořenou funkci v PL/pgSQL?

Zkuste to:

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;

V postgresu 9.5 SELECT outer(); výstupy

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

EDIT:pokud nevypustíte vnitřní funkci na konci vnější funkce, zůstane viditelná pro zbytek databáze.



  1. Jak připojit databázi SQL Server z příkazového řádku

  2. SQL SELECT LIKE (necitlivá malá a velká písmena)

  3. ORA-04076:neplatná NOVÁ nebo STARÁ specifikace - PL/SQL - Oracle Trigger

  4. Jak vyvinout offline první nativní aplikaci pro Android