MySQL Saklı Yordam (Stored Procedure) Kullanımı – Adım Adım Rehber
Bu Rehberde Ne Öğreneceksiniz?
- MySQL Saklı Yordam (Stored Procedure) kavramı
- Parametresiz ve parametreli saklı yordam oluşturma
- IN ve OUT parametreleriyle veri alma ve döndürme
- Saklı yordamları çalıştırma ve silme
Teknik Analiz ve Özet
Bu rehber, MySQL veritabanında iş mantığını veritabanı seviyesinde yönetmek için kullanılan saklı yordamları ele alır.
Amaç, uygulama kodunda tekrar eden SQL sorgularını azaltmak ve güvenliği artırmaktır.
Adımlar; örnek veritabanı hazırlığı, saklı yordam oluşturma, parametrelerle çalışma ve yordam silme süreçlerinden oluşur.
1. Örnek Veritabanı ve Tablo Hazırlığı
Öncelikle test işlemleri için bir veritabanı ve araç bilgilerini tutacak bir tablo oluşturulur.
Aşağıdaki komut yeni bir veritabanı oluşturur ve aktif hale getirir:
CREATE DATABASE rabisu_db;
USE rabisu_db;
- Bu komut, araç bilgilerini saklayacak tabloyu oluşturur:
CREATE TABLE cars (
make varchar(100),
model varchar(100),
year int,
value decimal(10, 2)
);
Örnek verileri tabloya eklemek için:
INSERT INTO cars VALUES
('Porsche', '911 GT3', 2020, 169700),
('Ferrari', '488 GTB', 2015, 254750);
2. Parametresiz Saklı Yordam Oluşturma
- Sık kullanılan bir sorgu, saklı yordam haline getirilerek tekrar kullanım sağlanabilir.
- Aşağıdaki kod tüm araçları marka ve değere göre sıralayan bir yordam oluşturur:
DELIMITER //
CREATE PROCEDURE get_all_cars()
BEGIN
SELECT * FROM cars ORDER BY make, value DESC;
END //
DELIMITER ;
- Saklı yordamı çalıştırmak için:
CALL get_all_cars();
3. Girdi (IN) Parametresi Kullanımı
- Kullanıcıdan alınan bir değerle filtreleme yapan saklı yordamlar oluşturulabilir.
Aşağıdaki yordam, üretim yılına göre araçları listeler:
DELIMITER //
CREATE PROCEDURE get_cars_by_year(IN year_filter int)
BEGIN
SELECT * FROM cars WHERE year = year_filter;
END //
DELIMITER ;
- 2017 model araçları getirmek için:
CALL get_cars_by_year(2017);
4. Çıktı (OUT) Parametresi ile Sonuç Alma
- Bazı durumlarda saklı yordamın birden fazla değer döndürmesi gerekir.
- Aşağıdaki yordam, belirli bir yıla ait araç sayısını ve en yüksek değeri döndürür:
DELIMITER //
CREATE PROCEDURE get_car_stats(
IN year_filter int,
OUT car_count int,
OUT max_val decimal(10,2)
)
BEGIN
SELECT COUNT(*), MAX(value)
INTO car_count, max_val
FROM cars
WHERE year = year_filter;
END //
DELIMITER ;
- Sonuçları almak için değişkenler kullanılır:
CALL get_car_stats(2020, @count, @max);
SELECT @count, @max;
5. Saklı Yordam Silme
- Bir saklı yordam güncellenecekse önce silinmesi gerekir.
- Aşağıdaki komut, belirtilen saklı yordamı veritabanından kaldırır:
DROP PROCEDURE IF EXISTS get_all_cars;
Sıkça Sorulan Sorular (SSS)
1. Saklı yordam kullanmak performansı artırır mı? Evet, sorgular sunucu tarafında çalıştığı için ağ trafiği azalır.
2. DELIMITER kullanımı neden gereklidir? Yordam içindeki noktalı virgüllerin sorguyu erken sonlandırmasını engeller.
3. Bir saklı yordam başka bir saklı yordamı çağırabilir mi? Evet, CALL komutu ile mümkündür.
4. Hangi yetkiler gereklidir? CREATE ROUTINE ve EXECUTE yetkileri gerekir.
Sonuç
MySQL saklı yordamlar, veritabanı işlemlerini daha düzenli, güvenli ve sürdürülebilir hale getirir. Bu rehberle birlikte parametreli ve parametresiz saklı yordamları kullanabilir, iş mantığını veritabanı seviyesinde yönetebilirsiniz. Bu yapıyı yüksek performanslı Rabisu Bulut altyapılarında uygulayarak projelerinizi daha ölçeklenebilir hale getirebilirsiniz.