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:
- ketidakmampuan untuk mengembalikan beberapa kumpulan hasil
- tidak ada dukungan untuk transaksi otonom (BEGIN, COMMIT, dan ROLLBACK dalam suatu fungsi)
- 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' );