PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да създам вложена функция в PL/pgSQL?

Опитайте:

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;

В postgres 9.5 SELECT outer(); изходи

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

РЕДАКТИРАНЕ:ако не премахнете вътрешната функция в края на външната функция, тя ще остане видима за останалата част от базата данни.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неуспешна инсталация на PostgresSQL:неуспешна инициализация на клъстер на база данни MAC OS

  2. PostgreSQL:проблеми с кодирането на Windows при използване на помощната програма за команден ред psql

  3. Проверете дали съществува колона на таблица в базата данни с помощта на SQLAlchemy и Alembic

  4. Как да репликирате само INSERT, а не DELETE/UPDATE на Slony Slave Node?

  5. Каква е разликата между потребител и роля?