Hoş Geldin, Mühendis!

Tüm mühendislerin ve mühendis adaylarının yer aldığı forum sayfamıza kayıt olmalısınız. Kayıt olduktan sonra tüm ders notlarına, teknik dokümanlara erişim sağlayabilecek, sorularınızı sorup cevaplar verebileceksiniz. Sitemiz tamamiyle ücretsiz olmakla birlikte Mühendis Puanı sistemi uygulamaktadır.

Bilgi paylaştıkça çoğalır.

Premium Abonelik 📢

Premium abonelik ile sitemizi reklamsız gezebilir, dosyaları sınırsızca indirebilirsiniz.

Daha Fazlası

[Muhendisiz.NET] Tekrar Sizlerleyiz! 🎭

Mühendisiz.NET sitesi forum ve blog sayfası olarak tekrar yayın hayatına başladı. 🤩 Sizlerde forum sayfamıza üye olabilir ve mühendis topluluğumuza katılabilirsiniz.

Daha Fazlası

Mühendis Puanı Sistemi🏆

Bilgi paylaştıkça çoğalır felsefesini benimsemiş olmamız nedeniyle Mühendis Puanı sistemini uygulamaya aldık. Dökümanları indirebilmek için bazı paylaşımlarda bulunmalısınız. 📨

Daha Fazlası
  • Dosya indirebilmek için 2 Mühendis Puanına ihtiyacınız var. Konuya yorum atarak 1 MP Not paylaşarak 6 MP kazanırsınız.
    Bilgi Paylaştıkça Çoğalır. (Mühendislik Puanı (MP) Nedir?)
  • Mühendis Puanı kazanmaya vakti olmayanlar için ücretli premium üyelik sistemi aktif edilmiştir.
    (Premium Üyelik SATIN AL)

MySQL Saklı Yordamlar

turkmedia

Moderatör
Katılım
8 Ara 2022
Mesajlar
760
Mühendis Puanı
1,612

Saklı yordam nedir?​

Saklı yordamlar veya Stored Procedure VTYS içerisine kayıt edilen derlenmiş SQL komutlarıdır.

Saklı yordamlar içerisine yazılan kodlar derlendiğinden dolayı SQL komutlarına göre daha hızlı çalışır.

Saklı yordam özelliğini SQL Server, Oracle, Sybase gibi gelişmiş VTY sistemleri destekler.

MySQL saklı yordamlar MySQL 5.0 sürümünden sonra dahil edilmiştir.

Saklı yordamlar genellikle tekrar eden sorguları kayıt altına almak için kullanılır.

Saklı yordam oluşturma​

Saklı yordamlar CREATE PROCEDURE anahtar kelimesi ile oluşturulur.

CREATE PROCEDURE SakliYordam(parametre1, parametre2, parametreN)
BEGIN
-- MySQL ve SQL komutları
END;
Saklı yordam kullanarak urunler tablosundaki tüm ürünleri listeleyelim.

DELIMITER //
CREATE PROCEDURE SakliYordam()
BEGIN
SELECT * FROM urunler;
END//
DELIMITER ;
Saklı yordam öncesindeki DELIMITER anahtar kelimesi ile varsayılan MySQL noktalı virgül ayracını (;) çift eğik çizgi (//) yapmış olduk.

Ayracı çift eğik çizgi yapmak yazılacak SQL ve MySQL komutlarını tek bir komut olarak saklanmasını sağlar.

Saklı yordam çalıştırma​

Saklı yordamın en önemli güzel özelliği bir kere yazılıp tekrar kullanılmasıdır.

Saklı yordam çalıştırmak için CALL anahtar kelimesi kullanılır.

CALL SakliYordam(parametre1, parametre2, parametreN);
Yazmış olduğumuz SakliYordam() isimli saklı yordamı çalıştıralım.

CALL SakliYordam();
Saklı yordam çalıştırıldığında kayıt edilen saklı yordam içerisindeki SQL komutları icra edilecektir.

Saklı yordam değişken tanımlama​

Saklı yordam içerisindeki değişken kullanımı yazısındaki gibidir.

Ancak saklı yordam içerisinde değişken oluşturmak için DECLARE anahtar kelimesi kullanılır.

Saklı yordam içerisinde değişken oluşturmak;

DECLARE degisken_adi veritipi(boyut) DEFAULT varsayilan_deger;
Değişkene değer atamak için SET anahtar kelimesi kullanılır.

Örnek; benim_adim isimli değişken oluşturmak ve değer atamak

DECLARE benim_adim VARCHAR(50) DEFAULT '';
SET benim_adim = 'Yusuf Sefa SEZER';
Saklı yordam içerisinde kullanalım.

DELIMITER //
CREATE PROCEDURE SakliYordam()
BEGIN
DECLARE benim_adim VARCHAR(50) DEFAULT '';
SET benim_adim = 'Yusuf Sefa SEZER';
END//
DELIMITER ;
Saklı yordamı çalıştırdığımızda değişken kullanılmadığından herhangi bir sonuç vermeyecektir.

Değişkeni SQL komutları içerisinde kullanmak için değişken ismini yazmak yeterli olacaktır.

DELIMITER //
CREATE PROCEDURE SakliYordam()
BEGIN
DECLARE benim_adim VARCHAR(50) DEFAULT '';
SET benim_adim = 'Mehmet Ceylan';
SELECT CHAR_LENGTH(benim_adim) AS Uzunluk;
END//
DELIMITER ;
Saklı yordam çalıştırıldığında benim_adim değişkenine yazılan değerin uzunluğunu verecektir.

Değişkenlerin faaliyet alanı tanımlandığı BEGIN ve END arasındadır.

Tanımlandığı BEGIN ve END dışarısından değişkenlere erişilmez.

Saklı yordam parametreleri​

Saklı yordamlara parametre geçirilerek parametreye göre çeşitli işlemler yapılabilir.

Saklı yordama parametreleri saklı yordam parantezi içerisine yazılır.

Saklı yordam parametreleri IN, OUT ve INOUT olmak üzere üçe ayrılır.

Basit bir parametre kullanım örneği;

DELIMITER //
CREATE PROCEDURE AdUzunluk(gelendeger VARCHAR(50))
BEGIN
SELECT CHAR_LENGTH(gelendeger) AS Uzunluk;
END//
DELIMITER ;
Parametre türü yazılmadığında IN parametresi kullanılır.

Yazılan parametreli saklı yordam kullanımı

CALL AdUzunluk('Yusuf SEZER');
Saklı yordamda IN ve OUT parametre türünün beraber kullanılması;

DELIMITER //
CREATE PROCEDURE AdUzunluk(IN gelendeger VARCHAR(50), OUT uzunluk INT)
BEGIN
SET uzunluk = CHAR_LENGTH(gelendeger);
END//
DELIMITER ;
Saklı yordamın kullanımı;

SET @uzunluk = 0;
CALL AdUzunluk('Yusuf SEZER', @uzunluk);
SELECT @uzunluk;
Saklı yordamları kullanarak kayıt eklemek;

DELIMITER //
CREATE PROCEDURE UrunEkle(IN gelen_urun_adi VARCHAR(50), IN gelen_urun_fiyat DECIMAL, IN gelen_kat_id INT)
BEGIN
INSERT INTO urunler(urun_adi, urun_fiyat, kat_id) VALUES(gelen_urun_adi, gelen_urun_fiyat, gelen_kat_id);
END//
DELIMITER ;
Yazılan saklı yordamı kullanarak kayıt eklemek

CALL UrunEkle('MySQL Kitabı', 49, 59);
Saklı yordamlar PHP, Java, C# gibi programlama dillerinde benzer şekilde çalıştırılır.

Hayırlı günler dilerim.
 

Son kaynaklar