PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara membuat fungsi bersarang di PL/pgSQL?

Cobalah:

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;

Di postgres 9.5 SELECT outer(); keluaran

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

EDIT:jika Anda tidak menjatuhkan fungsi dalam di akhir fungsi luar, itu akan tetap terlihat oleh database lainnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. django.db.migrations.RenameModel dan nama urutan AutoField

  2. PostreSQL 10 gagal memulai di Ubuntu 18.04 berjalan di Subsistem Windows untuk Linux

  3. Cara mengatur TimeStamp dengan Timezone di Laravel 5 Migrate

  4. Masalah kinerja dalam permintaan pembaruan

  5. Apa tipe data yang tepat untuk menyimpan zona waktu?