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

Cara memasukkan data ke dalam tabel menggunakan prosedur tersimpan di postgresql

PostgreSQL tidak mendukung prosedur tersimpan hingga PG11. Sebelum itu, Anda bisa mendapatkan hasil yang sama menggunakan fungsi. Misalnya:

CREATE FUNCTION MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
  RETURNS void AS
  $BODY$
      BEGIN
        INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
        VALUES(_sno, _eid, _sd, _ed, _sid, _status);
      END;
  $BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;

Anda kemudian dapat menyebutnya seperti ini:

select * from MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );

Batasan utama pada fungsi tersimpan Pg - dibandingkan dengan prosedur tersimpan yang sebenarnya - adalah:

  1. ketidakmampuan untuk mengembalikan beberapa kumpulan hasil
  2. tidak ada dukungan untuk transaksi otonom (BEGIN, COMMIT, dan ROLLBACK dalam suatu fungsi)
  3. tidak ada dukungan untuk sintaks CALL standar SQL, meskipun driver ODBC dan JDBC akan menerjemahkan panggilan untuk Anda.

Contoh

Mulai dari PG11, CREATE PROCEDURE sintaks diperkenalkan yang menyediakan dukungan untuk transaksi.

CREATE PROCEDURE MyInsert(_sno integer, _eid integer, _sd date, _ed date, _sid integer, _status boolean)
LANGUAGE SQL
AS $BODY$
    INSERT INTO app_for_leave(sno, eid, sd, ed, sid, status)
    VALUES(_sno, _eid, _sd, _ed, _sid, _status);   
$BODY$;

Yang bisa disebut dengan:

CALL MyInsert(1,101,'2013-04-04','2013-04-04',2,'f' );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan Nama Bulan Pendek di PostgreSQL

  2. Apakah urutan tabel dalam gabungan penting, ketika gabungan KIRI (luar) digunakan?

  3. Bagaimana Fungsi Ln() Bekerja di PostgreSQL

  4. Simulasikan CREATE DATABASE JIKA TIDAK ADA untuk PostgreSQL?

  5. Izin ditolak untuk hubungan