Terjemahan ke Bahasa Indonesia (id)

MySQL - Fungsi Tersimpan

Halo, para entusiasta basis data yang sedang berkembang! Hari ini, kita akan mendalam ke dunia yang menarik dari Fungsi Tersimpan MySQL. Sebagai guru komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk menghidahkan Anda dalam perjalanan ini, bahkan jika Anda belum pernah menulis satu baris kode sebelumnya. Jadi, ambil sebuah gelas minuman favorit Anda, dan mari kita mulai!

MySQL - Stored Functions

Apa Itu Fungsi Tersimpan MySQL?

Bayangkan Anda memiliki buku resep magis yang bisa segera membuat makanan favorit Anda saat Anda membutuhkannya. Itu seperti apa yang Fungsi Tersimpan MySQL untuk basis data! Itu seperti resep yang telah ditulis sebelumnya (atau fungsi) yang Anda bisa panggil saat Anda memerlukan untuk melakukan tugas tertentu di basis data Anda.

Mengapa Menggunakan Fungsi Tersimpan?

  1. Reusabilitas: Tulis sekali, gunakan berkali-kali!
  2. Konsistensi: Memastikan logika yang sama diterapkan di mana-mana.
  3. Keamanan: Mengontrol siapa yang bisa mengakses dan mengubah fungsi Anda.
  4. Kinerja: Mereka bisa lebih cepat daripada menulis kode yang sama berkali-kali.

Sekarang, mari kita lipat lengan dan buat fungsi tersimpan pertamanya!

Membuat Fungsi Tersimpan Pertama

Ini adalah contoh sederhana untuk memulai:

DELIMITER //

CREATE FUNCTION HelloWorld()
RETURNS VARCHAR(50)
DETERMINISTIC
BEGIN
RETURN 'Hello, World!';
END //

DELIMITER ;

mari kitauraikan ini:

  1. DELIMITER //: Ini memberitahu MySQL untuk menggunakan // sebagai pembatas pernyataan daripada tanda koma (;) default. Kita melakukan ini karena fungsi kita mengandung tanda koma, dan kita tidak ingin MySQL terganggu.

  2. CREATE FUNCTION HelloWorld(): Baris ini mendeklarasikan bahwa kita sedang membuat fungsi bernama "HelloWorld".

  3. RETURNS VARCHAR(50): Ini menentukan bahwa fungsi kita akan mengembalikan string (VARCHAR) hingga 50 karakter.

  4. DETERMINISTIC: Kata kunci ini memberitahu MySQL bahwa untuk input yang sama, fungsi akan selalu mengembalikan output yang sama.

  5. BEGIN dan END: Kata-kata ini membungkus tubuh fungsi kita.

  6. RETURN 'Hello, World!';: Ini adalah kode sebenarnya dari fungsi kita. Itu hanya mengembalikan string "Hello, World!".

  7. DELIMITER ;: Ini mengatur pembatas kembali ke tanda koma default.

Sekarang, mari kita panggil fungsi kita:

SELECT HelloWorld();

Dan voila! Anda seharusnya melihat "Hello, World!" sebagai hasil. Selamat, Anda baru saja membuat dan memanggil fungsi tersimpan pertama Anda!

Parameter dan Variabel dalam Fungsi Tersimpan

Marilah kita membuat hal ini lebih menarik dengan menambahkan parameter dan variabel ke fungsi kita.

DELIMITER //

CREATE FUNCTION Greet(name VARCHAR(50))
RETURNS VARCHAR(100)
DETERMINISTIC
BEGIN
DECLARE greeting VARCHAR(100);
SET greeting = CONCAT('Hello, ', name, '! Selamat datang di fungsi MySQL!');
RETURN greeting;
END //

DELIMITER ;

Dalam contoh ini:

  1. Kita menambahkan parameter name VARCHAR(50) ke fungsi kita.
  2. Kita mendeklarasikan variabel greeting menggunakan kata kunci DECLARE.
  3. Kita menggunakan kata kunci SET untuk memberikan nilai ke variabel kita.
  4. Kita menggunakan fungsi CONCAT untuk menggabungkan string.

Marilah kita panggil fungsi baru ini:

SELECT Greet('Alice');

Ini seharusnya mengembalikan: "Hello, Alice! Selamat datang di fungsi MySQL!"

Menggunakan Fungsi Tersimpan dengan Data Basis Data

Sekarang, mari kita buat fungsi yang benar-benar berinteraksi dengan basis data kita. Bayangkan kita memiliki tabel yang disebut employees dengan kolom id, first_name, last_name, dan salary.

DELIMITER //

CREATE FUNCTION CalculateBonus(employee_id INT)
RETURNS DECIMAL(10,2)
READS SQL DATA
BEGIN
DECLARE employee_salary DECIMAL(10,2);
DECLARE bonus DECIMAL(10,2);

SELECT salary INTO employee_salary
FROM employees
WHERE id = employee_id;

SET bonus = employee_salary * 0.1;

RETURN bonus;
END //

DELIMITER ;

Fungsi ini:

  1. Menerima employee_id sebagai input.
  2. Mendeklarasikan variabel employee_salary dan bonus.
  3. Mengambil gaji karyawan dari tabel employees.
  4. Menghitung bonus sebesar 10% dari gaji.
  5. Mengembalikan bonus yang dihitung.

Untuk menggunakan fungsi ini:

SELECT first_name, last_name, CalculateBonus(id) AS bonus
FROM employees
WHERE id = 1;

Ini akan mengembalikan nama depan, nama belakang, dan bonus yang dihitung untuk karyawan dengan id 1.

Aliran kendali dalam Fungsi Tersimpan

Marilah kita tingkatkan kalkulasi bonus kita dengan beberapa aliran kendali:

DELIMITER //

CREATE FUNCTION CalculateBonusTier(employee_id INT)
RETURNS VARCHAR(20)
READS SQL DATA
BEGIN
DECLARE employee_salary DECIMAL(10,2);
DECLARE bonus_tier VARCHAR(20);

SELECT salary INTO employee_salary
FROM employees
WHERE id = employee_id;

IF employee_salary < 30000 THEN
SET bonus_tier = 'Perunggu';
ELSEIF employee_salary < 50000 THEN
SET bonus_tier = 'Silver';
ELSE
SET bonus_tier = 'Emas';
END IF;

RETURN bonus_tier;
END //

DELIMITER ;

Fungsi ini menggunakan IF, ELSEIF, dan ELSE untuk menentukan tingkat bonus berdasarkan gaji karyawan.

Memanggil Fungsi Tersimpan dari Prosedur Tersimpan

Akhirnya, mari kita lihat bagaimana kita bisa menggunakan fungsi tersimpan dalam prosedur tersimpan:

DELIMITER //

CREATE PROCEDURE EmployeeBonusReport(IN emp_id INT)
BEGIN
DECLARE emp_name VARCHAR(100);
DECLARE emp_bonus DECIMAL(10,2);
DECLARE emp_bonus_tier VARCHAR(20);

SELECT CONCAT(first_name, ' ', last_name) INTO emp_name
FROM employees
WHERE id = emp_id;

SET emp_bonus = CalculateBonus(emp_id);
SET emp_bonus_tier = CalculateBonusTier(emp_id);

SELECT emp_name AS 'Nama Karyawan',
emp_bonus AS 'Jumlah Bonus',
emp_bonus_tier AS 'Tingkat Bonus';
END //

DELIMITER ;

Prosedur ini:

  1. Menerima ID karyawan sebagai input.
  2. Mengambil nama lengkap karyawan.
  3. Memanggil fungsi CalculateBonus untuk mendapatkan jumlah bonus.
  4. Memanggil fungsi CalculateBonusTier untuk mendapatkan tingkat bonus.
  5. Mengembalikan laporan dengan nama karyawan, jumlah bonus, dan tingkat bonus.

Untuk memanggil prosedur ini:

CALL EmployeeBonusReport(1);

Dan itu adalah! Kita telah meliputi dasar-dasar Fungsi Tersimpan MySQL, dari pembuatan hingga penggunaannya dalam prosedur tersimpan. Ingat, latihan membuat sempurna, jadi jangan takut untuk mencoba fungsi Anda sendiri. Selamat coding!

Credits: Image by storyset