SQL - Stored Procedures: A Beginner's Guide

Hai那里,未来的SQL法师们!今天,我们将踏上一段激动人心的旅程,探索存储过程的世界。如果你是编程新手,不用担心——我会成为你的友好向导,一步步解释所有内容。所以,拿起一杯咖啡,舒服地坐下来,让我们开始吧!

SQL - Stored Procedures

apa itu SQL Stored Procedures?

Imajina jika kau memiliki buku nujum. Daripada mengucapkan mantra yang sama berkali-kali, kau boleh menulisnya sekali dan hanya katakan namanya apabila kau memerlukannya. Itu adalah dasar apa yang disebut Stored Procedure dalam SQL!

Sebuah Stored Procedure adalah set terlewak SQL yang ditulis terlebih dahulu dan disimpan untuk digunakan semula. Ia seperti membuat perintah custom sendiri dalam pangkalan data. Menarik, kan?

Mari kita lihat contoh mudah:

DELIMITER //
CREATE PROCEDURE GetAllCustomers()
BEGIN
SELECT * FROM Customers;
END //
DELIMITER ;

Ini adalah apa yang berlaku:

  1. Kita mulai dengan DELIMITER // untuk mengubah penentu secara buatansaja.
  2. Kita membuat prosedur bernama GetAllCustomers.
  3. Antara BEGIN dan END, kita menulis perintah SQL kita.
  4. Kita tamatkan dengan DELIMITER ; untuk mengubah penentu kembali.

Untuk menggunakan prosedur ini, kau hanya perlu menulis:

CALL GetAllCustomers();

Dan voila! Kau baru saja menjalankan prosedur pertama kau. Itu mudah!

Membuat Prosedur

Sekarang, kita sudah mencicipi kaki kita, mari kita buat prosedur yang sedikit lebih kompleks. Kita akan membuat satu yang menghitung bilangan pesanan yang dibuat pelanggan.

DELIMITER //
CREATE PROCEDURE CountCustomerOrders(IN customerID INT, OUT orderCount INT)
BEGIN
SELECT COUNT(*) INTO orderCount
FROM Orders
WHERE CustomerID = customerID;
END //
DELIMITER ;

Jangan gelisahkan! Mari kita pecahkan ini:

  1. Kita membuat prosedur bernama CountCustomerOrders.
  2. Ia menerima dua parameter: customerID (input) dan orderCount (output).
  3. Kita menghitung pesanan untuk pelanggan yang diberikan dan menyimpan hasilnya dalam orderCount.

Untuk menggunakan prosedur ini:

CALL CountCustomerOrders(1, @count);
SELECT @count;

Ini akan menghitung pesanan untuk pelanggan dengan ID 1 dan menyimpan hasilnya dalam variabel @count.

Jenis Parameter Prosedur

Dalam dunia SQL yang magical kita, prosedur dapat memiliki tiga jenis parameter:

Jenis Parameter Keterangan
IN Parameter input (default)
OUT Parameter output
INOUT Dapat digunakan untuk input dan output

Mari kita jelajahi setiap jenis ini dengan contoh!

Prosedur dengan parameter IN

Kita sudah melihat parameter IN dalam prosedur CountCustomerOrders. Mari lihat contoh lain:

DELIMITER //
CREATE PROCEDURE GetCustomersByCountry(IN countryName VARCHAR(50))
BEGIN
SELECT * FROM Customers
WHERE Country = countryName;
END //
DELIMITER ;

Untuk menggunakan ini:

CALL GetCustomersByCountry('USA');

Ini akan mengembalikan semua pelanggan dari USA. Sederhana dan efektif!

Prosedur dengan parameter OUT

Kita sudah melihat ini juga, tetapi mari buat contoh lain:

DELIMITER //
CREATE PROCEDURE GetTotalOrderValue(IN orderID INT, OUT totalValue DECIMAL(10,2))
BEGIN
SELECT SUM(Quantity * UnitPrice)
INTO totalValue
FROM OrderDetails
WHERE OrderID = orderID;
END //
DELIMITER ;

Untuk menggunakan ini:

CALL GetTotalOrderValue(10248, @total);
SELECT @total;

Ini menghitung nilai keseluruhan pesanan 10248 dan menyimpannya dalam @total.

Prosedur dengan parameter INOUT

Parameter INOUT adalah seperti jalan dua hala. Mereka dapat membawa data masuk dan mengambil data keluar. Mari lihat contoh:

DELIMITER //
CREATE PROCEDURE DoubleNumber(INOUT num INT)
BEGIN
SET num = num * 2;
END //
DELIMITER ;

Untuk menggunakan ini:

SET @myNumber = 5;
CALL DoubleNumber(@myNumber);
SELECT @myNumber;

Ini akan menggandakan 5 menjadi 10 dan menyimpannya kembali ke @myNumber.

Kelebihan Stored Procedures

Sekarang kita sudah melihat bagaimana membuat dan menggunakan stored procedures, mungkin kau bertanya, " Mengapa harus bermasalah?" Well, teman curius, ini adalah beberapa alasan yang menarik:

  1. Peningkatan Prestasi: Stored procedures dikompilasi sekali dan disimpan dalam bentuk eksekutable, jadi mereka akan berjalan lebih cepat daripada perintah SQL individual.

  2. Penurunan Lalu lintas Jaringan: Daripada mengirimkan banyak perintah SQL, kau hanya mengirimkan nama prosedur dan parameter.

  3. Reusabiliti: Tulis sekali, gunakan berkali-kali. Itu seperti membuat makanan untuk pangkalan data kau!

  4. Keamanan: Kau dapat memberikan pengguna akses ke stored procedures tanpa memberikan mereka akses langsung ke tabel yang ada.

  5. Kemudahan Penyusunan: Logik bisnis yang terpusat membuatnya mudah untuk memperbarui dan menjaga kode pangkalan data kau.

Kekurangan Stored Procedures

Tunggu! Sebelum kau menjadi gila prosedur, ada beberapa hal untuk diingat:

  1. Debugging Bisa Sulit: Tidak selalu mudah untuk melangkah melalui kode prosedur.

  2. Kurang Portabiliti: Stored procedures sering kali menggunakan sintaks khusus basis data, membuatnya sulit untuk beralih ke sistem basis data lain.

  3. Penggunaan Berlebihan Bisa Mengakibatkan Rancangan yang Buruk: Kadang-kadang, lebih baik mengatur logik dalam kode aplikasi.

  4. Tantangan Pengawasan Versi: Bisa sulit untuk melacak perubahan pada stored procedures dibandingkan dengan kode aplikasi.

Dan itu adalah dia, teman-teman! Kau baru saja menyelesaikan kursus cepat dalam SQL Stored Procedures. Ingat, seperti mana alat yang kuat, gunakan mereka bijaksana. Latih, eksperimen, dan segera kau akan menciptakan ilmu basis data seperti seorang ahli SQL!

Selamat berkoding, dan moga permintaanmu selalu mengembalikan hasil yang kau harap!

Credits: Image by storyset