Stored Procedures dan Functions di MySQL

Stored Procedures dan Functions adalah dua fitur penting dalam MySQL yang memungkinkan eksekusi perintah SQL secara otomatis dan terstruktur. Keduanya membantu mengurangi redundansi kode, meningkatkan kinerja database, serta menyederhanakan pengelolaan data.

Dalam artikel ini, kita akan membahas konsep dasar, perbedaan antara Stored Procedures dan Functions, cara membuatnya, serta contoh penggunaannya.

Apa Itu Stored Procedure dan Function?

Stored Procedure

Stored Procedure adalah kumpulan perintah SQL yang disimpan dalam database dan dapat dieksekusi berulang kali tanpa perlu menulis ulang query. Stored Procedure berguna untuk menangani operasi kompleks, seperti manipulasi data dan transaksi.

Function

Function dalam MySQL mirip dengan Stored Procedure, tetapi memiliki perbedaan utama: Function selalu mengembalikan satu nilai dan dapat digunakan dalam query SQL seperti SELECT.

PerbedaanStored ProcedureFunction
Penggunaan di QueryTidak bisa digunakan dalam SELECTBisa digunakan dalam SELECT
Dapat Mengubah DataYa (Dapat menggunakan INSERT, UPDATE, DELETE)Tidak (Hanya bisa membaca data)
Pengembalian NilaiBisa mengembalikan satu atau lebih nilaiHanya mengembalikan satu nilai
PemanggilanMenggunakan CALLMenggunakan SELECT

Cara Membuat Stored Procedure di MySQL

Sintaks Dasar Stored Procedure

DELIMITER //
CREATE PROCEDURE nama_procedure(parameter)
BEGIN
    -- Perintah SQL di sini
END //
DELIMITER ;
  • DELIMITER // digunakan untuk menghindari konflik dengan ; di dalam prosedur.
  • parameter bisa berupa input, output, atau keduanya.

Contoh Stored Procedure Sederhana

Stored Procedure berikut akan menampilkan semua data dari tabel employees.

DELIMITER //
CREATE PROCEDURE get_all_employees()
BEGIN
    SELECT * FROM employees;
END //
DELIMITER ;

Menjalankan Stored Procedure

CALL get_all_employees();

Stored Procedure dengan Parameter

Stored Procedure berikut menampilkan data karyawan berdasarkan ID:

DELIMITER //
CREATE PROCEDURE get_employee_by_id(IN emp_id INT)
BEGIN
    SELECT * FROM employees WHERE id = emp_id;
END //
DELIMITER ;

Menjalankan Stored Procedure dengan Parameter

CALL get_employee_by_id(101);

Cara Membuat Function di MySQL

Sintaks Dasar Function

DELIMITER //
CREATE FUNCTION nama_function(parameter) RETURNS tipe_data
DETERMINISTIC
BEGIN
    -- Perintah SQL di sini
    RETURN nilai;
END //
DELIMITER ;
  • RETURNS tipe_data menentukan jenis data yang dikembalikan.
  • DETERMINISTIC berarti function selalu memberikan output yang sama untuk input yang sama.

Contoh Function Sederhana

Function berikut menghitung gaji tahunan berdasarkan gaji bulanan.

DELIMITER //
CREATE FUNCTION hitung_gaji_tahunan(gaji_bulanan DECIMAL(10,2)) RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
    RETURN gaji_bulanan * 12;
END //
DELIMITER ;

Menjalankan Function

SELECT hitung_gaji_tahunan(5000);

Output: 60000.00

Manipulasi Data dengan Stored Procedure

Stored Procedure dapat digunakan untuk INSERT, UPDATE, atau DELETE data dalam tabel.

Contoh: Stored Procedure untuk Menambah Data

DELIMITER //
CREATE PROCEDURE add_employee(IN emp_name VARCHAR(100), IN emp_salary DECIMAL(10,2))
BEGIN
    INSERT INTO employees (name, salary) VALUES (emp_name, emp_salary);
END //
DELIMITER ;

Menjalankan Stored Procedure

CALL add_employee('John Doe', 7000);

Menghapus Stored Procedure dan Function

Jika ingin menghapus prosedur atau fungsi yang sudah dibuat, gunakan perintah berikut:

Menghapus Stored Procedure

DROP PROCEDURE IF EXISTS nama_procedure;

Menghapus Function

DROP FUNCTION IF EXISTS nama_function;

Keuntungan Menggunakan Stored Procedures dan Functions

  • Mengurangi Redundansi Kode – Query kompleks bisa dibuat sekali dan digunakan berkali-kali.
  • Meningkatkan Kinerja – MySQL menyimpan prosedur dalam bentuk precompiled, sehingga lebih cepat dieksekusi.
  • Meningkatkan Keamanan – Hak akses bisa diatur untuk mencegah manipulasi langsung oleh pengguna biasa.
  • Menyederhanakan Manajemen Database – Operasi kompleks seperti transaksi dapat dilakukan dengan mudah.

Kesimpulan

Stored Procedures dan Functions di MySQL adalah fitur yang sangat berguna untuk meningkatkan efisiensi pengelolaan database. Stored Procedure cocok untuk eksekusi query yang melibatkan manipulasi data, sementara Function lebih cocok untuk perhitungan dan operasi yang mengembalikan satu nilai.

Dengan memahami dan menerapkan kedua fitur ini, Anda dapat mengembangkan sistem database yang lebih cepat, aman, dan mudah dikelola.