Procedure dan Function
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'); |
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung
0 comments:
Post a Comment