Tuesday, November 24, 2020

Procedure dan Function

 Procedure dan Function

Pada dasarnya, function dan stored procedure database adalah hal yang sama, yaitu kumpulan peritah atau query yang disimpan dan dijalankan di dalam server database. Function dan stored procedure diikat dengan sebuah nama, sehingga kita hanya perlu memanggil nama dari function dan stored procedure yang ingin dieksekusi.

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');

Contoh procedure :

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');

Script di atas menjelaskan pembutan procedure dengan nama savelokasi, berikut penjelasan beberapa source code penting di atas :

- DROP PROCEDURE IF EXISTS savelokasi : menghapus procedure jika terdapat procedure dengan nama yang sama.

- SQL SECURITY INVOKER : security code dari MYSQL.

CREATE PROCEDURE savelokasi(kode VARCHAR(5), nama VARCHAR(100)) : membuat procedure dengan nama savelokasi dengan kebutuhan variabel kode dan nama berdasarkan tipe data dan panjang data yang ditentukan.

- INSERT INTO lokasi(id_lokasi, nama_lokasi) VALUES(kode, nama) : perintah untuk menambahkan data sesuai nama kolom dengan nilai dari variabel yang dipanggil.

- CALL savelokasi('LOK03', 'Surabaya') : memanggil procedure savelokasi.

Semua pembahasan di atas dapat kita praktekan kembali berdasarkan contoh kasus yang berbeda, serta dapat dikembangkan menjadi lebih kompleks lagi.

Sumber referensi :
Buku : "Belajar Otodidak MySQL (Teknik Pembuatan dan Pengelolaan Database)"
Penulis : Budi Raharjo
Penerbit : Informatika - Bandung
Praktek : Mohammad Fazlurrahman

0 comments:

Post a Comment