Penulis : Budi Raharjo
Penerbit : Informatika - Bandung
Perbedaan mencolok antara keduanya terletak di CRUD (create, read, update dan delete) data, dimana function hanya bisa melakukan select data atau task sederhana lainnya, tanpa bisa menggunakan perintah insert, edit dan delete data. Sedangkan stored procedure dapat melakukan task yang lebih kompleks yang tidak bisa diakomodir oleh function, sehingga stored procedure banyak digunakan sebagai alternatif pengolahan data dalam bahasa pemrograman.
Contoh function :
1 2 3 4 5 6 7 8 9 10 | DROP FUNCTION IF EXISTS hari; CREATE FUNCTION hari() RETURNS DATETIME BEGIN DECLARE hari DATETIME; SET hari = NOW(); RETURN (hari); END; SELECT hari(); |
Script di atas menjelaskan pembuatan function dengan nama hari yang bertujuan untuk menampilkan tanggal dan waktu saat ini, adapun penjelasan singkat dari beberapa sourcode code di atas :
- DROP FUNCTION IF EXISTS hari : menghapus function jika terdapat function dengan nama yang sama.
- RETURNS DATETIME : menjelaskan tipe data yang akan ditampilkan function tersebut, dapat juga menggunakan tipe data lain seperti INT, VARCHAR dan tipe data lainnya.
- DECLARE hari DATETIME : mentapkan tipe data yang digunakan pada variabel hari.
- SET hari = NOW() : membuat variabel bernama hari yang berisi nilai NOW() atau tanggal dan jam sekarang, dapat juga menyimpan nilai lain sesuai tipe data yang ditentukan.
- RETURN hari : memanggil variabel hari untuk ditampilkan.
- SELECT hari() : memangil function hari.
Contoh di atas merupakan implementasi sederhana dari sebuah function, kita dapat membuat function yang lebih rumit lagi seperti membut sebuah rumus atau menampilkan data dari sebuah tabel berdasarkan pencarin dari variabel tertentu, perlu diingat bahwa function hanya bisa sebatas melakukan perintah SELECT data tanpa bisa melakukan CREATE, UPDATE atau DELETE.
Berikut contoh pembuatan function untuk menampilkan data dari kolom nama_provinsi di dalam tabel lokasi berdasarkan id_lokasi 'LOK01' :
1 2 3 4 5 6 7 8 9 10 | DROP FUNCTION IF EXISTS lokasi; CREATE FUNCTION lokasi(kode VARCHAR(5)) RETURNS VARCHAR(100) BEGIN DECLARE cari VARCHAR(100); SELECT nama_lokasi INTO cari FROM lokasi WHERE id_lokasi=kode; RETURN (cari); END; SELECT lokasi('LOK01'); |
1 2 3 4 5 6 7 8 9 | DROP PROCEDURE IF EXISTS savelokasi; CREATE PROCEDURE savelokasi(kode VARCHAR(5), nama VARCHAR(100)) SQL SECURITY INVOKER BEGIN INSERT INTO lokasi(id_lokasi, nama_lokasi) VALUES(kode, nama); END; CALL savelokasi('LOK03', 'Surabaya'); |
2. Events scheduler status, tombol ini berfungsi untuk mengaktifkan dan menonaktifkan semua events yang ada, pastikan statusnya ON agar semua event yang kita buat berjalan sesuai fungsinya. Usahakan juga service database kita tetap berjalan, karena status events scheduler akan OFF jika service database kita tidak berjalan.
3. Add event, tombol ini berfungsi untuk membuat event baru.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | DROP EVENT IF EXISTS Rekap_Bulanan; CREATE EVENT Rekap_Bulanan ON SCHEDULE EVERY 1 DAY STARTS '2019-01-01 10:10:00' ON COMPLETION NOT PRESERVE ENABLE DO BEGIN DECLARE BOOL DEFAULT 0; DECLARE period VARCHAR(40); SET period = DATE_FORMAT(CURDATE(),'%Y-%m'); -- Hari Kerja INSERT INTO rekap_absensi(id_ra,id_pegawai,periode,created_at) SELECT '' AS kode, idpegawai, period, NOW() FROM pegawai WHERE tgl_resign IS NULL AND alasan IS NULL AND idpegawai NOT IN('1', '2', '3') AND idpegawai NOT IN(SELECT rekap_absensi.id_pegawai FROM rekap_absensi WHERE rekap_absensi.periode=period); IF THEN ROLLBACK; ELSE COMMIT; END IF; END |
Tabel rekap_absensi
1. id_ra INT(11) Auto Increment (PK)2. idpegawai VARCHAR(10)3. periode DATE()4. created_at DATETIME()
1 | SET GLOBAL event_scheduler = 1; |
1 | SET GLOBAL event_scheduler = 0; |
Membahas Unique, Check dan Indeks UNIQUE Pada dasarnya fungsi unique sama fungsinya seperti primary key , yaitu sebagai validasi agar tidak ...