Secara resmi, PostgreSQL hanya memiliki "fungsi". Fungsi pemicu kadang-kadang disebut sebagai "prosedur pemicu", tetapi penggunaan itu tidak memiliki arti yang berbeda. Secara internal, fungsi kadang-kadang disebut sebagai prosedur, seperti dalam katalog sistem pg_proc
. Itu peninggalan dari PostQUEL. Setiap fitur yang beberapa orang (mungkin dengan pengalaman dalam sistem basis data yang berbeda) mungkin terkait dengan prosedur, seperti relevansinya untuk mencegah injeksi SQL atau penggunaan parameter output, juga berlaku untuk fungsi seperti yang ada di PostgreSQL.
Sekarang, ketika orang-orang di komunitas PostgreSQL berbicara tentang "prosedur tersimpan" atau "prosedur tersimpan nyata", bagaimanapun, mereka sering berarti fitur hipotetis dari objek seperti fungsi yang dapat memulai dan menghentikan transaksi dalam tubuhnya, sesuatu yang fungsi saat ini tidak dapat melakukan. Penggunaan istilah "prosedur tersimpan" dalam konteks ini tampaknya secara analogi dengan produk basis data lainnya. Lihat utas milis ini untuk ide yang tidak jelas.
Namun dalam praktiknya, perbedaan fungsi versus prosedur dalam hal kemampuan mengendalikan transaksi mereka tidak diterima secara universal, dan tentu saja banyak programmer tanpa bias basis data akan mengambil interpretasi mirip Pascal dari prosedur sebagai fungsi tanpa nilai balik. (Standar SQL tampaknya mengambil jalan tengah, dalam bahwa prosedur secara default memiliki perilaku transaksi yang berbeda dari fungsi, tetapi ini dapat disesuaikan per objek.) Jadi dalam hal apa pun, dan terutama ketika melihat pertanyaan di Stack Exchange dengan audiens yang sangat beragam, Anda harus menghindari asumsi terlalu banyak dan menggunakan istilah yang lebih jelas atau mendefinisikan properti yang Anda harapkan.