PostgreSQL - Fungsi
PostgreSQL functions, juga dikenal sebagai Prosedur Tersimpan, memungkinkan Anda menjalankan operasi yang biasanya mengambil beberapa kueri dan perjalanan bolak-balik dalam satu fungsi dalam database. Fungsi memungkinkan penggunaan kembali database karena aplikasi lain dapat berinteraksi langsung dengan prosedur tersimpan Anda, bukan kode tingkat menengah atau duplikat.
Fungsi dapat dibuat dalam bahasa pilihan Anda seperti SQL, PL / pgSQL, C, Python, dll.
Sintaksis
Sintaks dasar untuk membuat fungsi adalah sebagai berikut -
CREATE [OR REPLACE] FUNCTION function_name (arguments)
RETURNS return_datatype AS $variable_name$
DECLARE
declaration;
[...]
BEGIN
< function_body >
[...]
RETURN { variable_name | value }
END; LANGUAGE plpgsql;
Dimana,
function-name menentukan nama fungsi.
Opsi [ATAU GANTI] memungkinkan modifikasi fungsi yang ada.
Fungsi tersebut harus mengandung a return pernyataan.
RETURNklausa menentukan bahwa tipe data yang akan Anda kembalikan dari fungsi. Itureturn_datatype dapat berupa basis, komposit, atau tipe domain, atau dapat merujuk pada tipe kolom tabel.
function-body berisi bagian yang dapat dieksekusi.
Kata kunci AS digunakan untuk membuat fungsi mandiri.
plpgsqladalah nama bahasa di mana fungsi diimplementasikan. Di sini, kami menggunakan opsi ini untuk PostgreSQL, Bisa SQL, C, internal, atau nama bahasa prosedural yang ditentukan pengguna. Untuk kompatibilitas mundur, nama dapat diapit oleh tanda kutip tunggal.
Contoh
Contoh berikut mengilustrasikan pembuatan dan pemanggilan fungsi mandiri. Fungsi ini mengembalikan jumlah total rekaman dalam tabel PERUSAHAAN. Kami akan menggunakan tabel PERUSAHAAN , yang memiliki catatan berikut -
testdb# select * from COMPANY;
id | name | age | address | salary
----+-------+-----+-----------+--------
1 | Paul | 32 | California| 20000
2 | Allen | 25 | Texas | 15000
3 | Teddy | 23 | Norway | 20000
4 | Mark | 25 | Rich-Mond | 65000
5 | David | 27 | Texas | 85000
6 | Kim | 22 | South-Hall| 45000
7 | James | 24 | Houston | 10000
(7 rows)
Fungsi totalRecords () adalah sebagai berikut -
CREATE OR REPLACE FUNCTION totalRecords ()
RETURNS integer AS $total$
declare
total integer;
BEGIN
SELECT count(*) into total FROM COMPANY;
RETURN total;
END;
$total$ LANGUAGE plpgsql;
Ketika query di atas dijalankan, hasilnya adalah -
testdb# CREATE FUNCTION
Sekarang, mari kita jalankan panggilan ke fungsi ini dan periksa catatan di tabel PERUSAHAAN
testdb=# select totalRecords();
Ketika query di atas dijalankan, hasilnya adalah -
totalrecords
--------------
7
(1 row)