23 Temmuz 2013 Salı

Stored Procedure'ler ve Fonksiyonlar

Ne zamandır blogumuzda bir yazı yayımlayamıyor idik. Uzmansorusu üzerinden tarafıma iletilen bir soruya hem blogum üzerinden cevap vererek elimi ısıtmak, hem de alaka buyurup bizlere soru soran arkadaşımıza yardımcı olmak istedim.:



Ne zamandır blogumuzda bir yazı yayımlayamıyor idik. Uzmansorusu üzerinden tarafıma iletilen bir soruya hem blogum üzerinden cevap vererek elimi ısıtmak, hem de alaka buyurup bizlere soru soran arkadaşımıza yardımcı olmak istedim.

Arkadaşımızın sorduğu soru kısaca : 
blogunuzdaki mysql storedle ilgili yazınızı okudum gayet güzel anlatmışsınız fakat ben bunları phpmyadminde sql sekmesını açıp yazdığımda çalışmıyor.hatta ben yordam şeklindede oluşturamadım hanı kodların mantıgını anladım ama çalışacağım ortamı ayarlıyamadım 2 günden beri araştırıyorum belki saçma bir soru oluyor ama bir yardım ederseniz çok makbule geçicek gerçekten. 
son olarak ben mysql stored procedure den anladığım şey bir nevi veri tabanı işlemlerini fonsiyon haline getirerek kullanmak ama bu fonksiyonlar biraz hızlı yanış yada ekliyeceğiniz varsa yazabilirsiniz :)

İlk olarak Php My Admin ekranında stored procedure oluşturma işlemini gerçekleştirememin çözümüne kısaca değineceğim.  Bu sorunu ilk zamanlar biz de yaşamış idik, DELIMETER (kısıtlayıcılar) kullanarak bu sorunu çözebilirsiniz. 
Örneğin : 
DELIMITER $$
CREATE PROCEDURE `myproc`()
BEGIN
SELECT 'it works!';
END$$
DELIMITER ;


İkinci sorunuzun cevabı için ise  stored procedure (yazının bundan sonraki kısmında, saklı yordam olarak anılacaktır.) ve fonksiyonlar arasındaki farklara aklım ve bilgim yettiğince kısaca değineceğim.
  • Saklı yordamlar bir veya daha fazla değer döndürebilirler. Oysa fonksiyonlar yalnızca bir değer döndürebilirler.
  • Saklı yordamlar giriş ve çıkış parametreleri alabiliyorken, fonksiyonlar yalnızca giriş parametresi alabilirler. (MSSQL gibi veritabanlarında fonksiyonlar için dönüş tipini de belirleyebiliyorsunuz.)
  • Saklı yordamların içerisinde, Select ifadelerinin yanı sıra DML olarak tabir edilen Data Manipulation Language yani veri editleme/güncelleme komutlarını da kullanabilirsiniz. Fakat Fonksiyon içerisinde kullanamazsınız.
  • Fonksiyonlar, saklı yordamların içerisinden çağrılabilirler; fakat stored procedure'ler fonksiyonların içerisinden çağrılamazlar.
  • Hata yönetimi için try-catch bloklarını saklı yordamlar içerisinde kullanabilirsiniz ancak try-catch bloklarını fonksiyonlar içerisinde kullanamazsınız.
  • Saklı yordamlar select ifadelerinin içerisinde kullanılamazlar. Fakat Fonksiyonlar Select ifadelerinin içerisinde kullanılabilir.
  • Transaction yönetimini saklı yordamlar çerisinde kullanabilirsiniz (satır kilitleme, roll back, commit vs.) fakat fonksiyonlar içersinde kullanamazsınız.
  • Kullanıcı tanımlı fonksiyonlar (UDF) ve fonksiyonlar bir SQL ifadelesinin her noktasında SELECT, WHERE, GROUP BY, HAVING vs. kullanılabilirken; Saklı yordamları kullanamazsınız. 
(Bu blog yazısı, eposta metni olarak gönderilmiş ve Blogger'ın E-posta ile yayınlama  servisi kullanılarak  yayınlanmıştır.)


Hiç yorum yok: