Di aplikasi basis
data PostgreSQL banyak tersedia fungsi – fungsi standar yang dapat
digunakan tapi mungkin juga belum tersedia fungsi yang dibutuhkan,
oleh karena itu bisa dibuat fungsi baru sesuai dengan kebutuhan.
Keuntungan membuat fungsi di database yaitu membuat kinerja aplikasi
lebih baik, karena data yang diolah tidak perlu bolak – balik
antara basis data dan server aplikasi. Dan jika aplikasi diganti
misalkan dari PHP ke Java, pastinya bisa sangat menghemat waktu dan
tenaga karena fungsi yang dibuat ada di sisi aplikasi basis data.
Contoh fungsi
untuk membuat id berdasarkan tanggal :
-- Input 1 = pencacah nilai bertipe integer, Input 2 = nama tabel yang akan digunakan nilai maksimalnya CREATE OR REPLACE FUNCTION getid(integer, character varying) -- Mengembalikan nilai dengan tipe character varying RETURNS character varying AS $BODY$ -- Deklarasi Variabel DECLARE -- bulanTahun diisi dengan bulan dan tahun sekarang bulanTahun character varying := (SELECT lpad(date_part('Month',CURRENT_DATE)::character varying || date_part('Year',CURRENT_DATE)::character varying,6, '0')); idS integer; BEGIN -- Ambil nilai maksimal dari bulan dan tahun sekarang EXECUTE 'SELECT COALESCE((SELECT MAX(SUBSTR(id,1,4)::integer) FROM '|| $2 ||' WHERE SUBSTR(id,5,10) = lpad(' || bulanTahun || '::character varying,6,0::character varying)),0)' INTO idS; -- tambahkan nilai id dengan max+1 idS = idS + $1; -- Kembalikan nilai dengan format noUrutBulanTahun RETURN lpad(idS::character varying,4,'0') || lpad(bulanTahun ,6,'0'); END; $BODY$ LANGUAGE plpgsql ;
Selanjutnya dicoba memanggil fungsi getId saat insert pada tabel tes.
INSERT INTO tes(id) VALUES(getId(1,'tes'));
Jangan lupa bikin tabelnya dulu... :DCREATE TABLE tes ( id character varying(10) NOT NULL, CONSTRAINT tes_pkey PRIMARY KEY (id ) )
0 komentar:
Posting Komentar