Gerekli Araçlar
MySQL 5.0
http://dev.mysql.com/get/Downloads/MySQ ... .gr/mysql/
SP,Function,view ve Trigger Destekletyen Freeware bir MySQL GUI aracı
http://www.polisoftonline.com/download/SQLyog50.exe
Not:SQLyog50 vakti zamanında freeware olarak dağıtılıyordu ozaman indirmiştim ama şimdi nette bulamadım elimdekini veriyorum.
MySQL 5.0 ve SQLYog kurulduğunu varsayıp devam ediyorum,
Öncelikle ek bir kaç bilgiyle başlayalım mySQL ilk kurulduğunda sadece root@localhost kullanıcısıyla gelir bu demektirki siz server harici bir sistemden MySQL e erişemezsiniz dolayısıyla root@% kullanıcsını tanımlamayı unutmayın.
Mysql5.0 ile birlikte information_shema adında bir system database gelir.bu Db yi açıp incelediğinizde tanımladığınız sp,function,view,trigger gibi elementlerin bu tablolar içinde tutulduğunu ayrıca yaratılan DB ler tablolar ve alanları ve bu alanların yetki düzeyleri ayrıca indexler hakkında bilgilerin tutulduğu sistem tabloları olduğunu göreceksiniz.
Stored Procedure
Basit bir SP nin yapısı aşağıdaki gibidir,
Kod: Tümünü seç
DELIMITER $$;
CREATE PROCEDURE spDeneme (IN GirisParametresi varchar(20) OUT cikisParametresi varchar(20))
BEGIN
. .. .. ... . .
END$$
DELIMITER ;$$
hiç giriş yada çıkış parametresi alamayan SP lerde yazabilirsiniz.
Girilen bir sayının negatif mi pozitifmi olduğunu gösteren bir SP yazalım (Not Bu Stored Function ile çok daha basit yazılabilir ama amaç öğrenmek)
Kod: Tümünü seç
DELIMITER $$;
CREATE PROCEDURE spIslem (in deger int , out sonuc varchar(20))
BEGIN
IF deger<0 THEN SET sonuc='NEGATIF';
ELSEIF deger>0 THEN SET sonuc='POZITIF';
END IF;
END$$
DELIMITER ;$$
En önemlisi ise değişkenlerimize değer atamak için SET ifadesini kullandığımıza dikkat edin,
Şimdi bu Sp yi kullanalım ,
Kod: Tümünü seç
CALL spIslem(10 , @sonuc);
SELECT @sonuc;
//Ekranda "POZITIF" yazıcaktır.
NOT: @ ifadesiyle yarattığımız değişkenler oturum süresince hafızada kalır ve kullanılabilir.
Şimdi de tblDeneme isimli tablomuzu sorgulayan ve geriye veri kümesi döndüren bir Sp yazalım ve parametre almasın bu SP.
Kod: Tümünü seç
DELIMITER $$;
CREATE PROCEDURE spTablosec ()
BEGIN
select *from tblDeneme;
END$$
DELIMITER ;$$
Kod: Tümünü seç
CALL spTablosec();
Ve unutmadan SP lere parametre geçtiğimiz değişkenleri sorgu içinde basitçe şu şekilde kullanabilirsiniz,
Kod: Tümünü seç
DELIMITER $$;
CREATE PROCEDURE spTablosec (IN kriter varchar(20))
BEGIN
select *from tblDeneme where alan=kriter;
END$$
DELIMITER ;$$
Kod: Tümünü seç
CALL spTablosec("KriterDeğeri");
Evet SP ler hakkında biraz bilgi sahibi olduğumuza göre birazda Function tanımlarına göz atalım.
Stored Function
MySQL de basit bir Functionun yapısı şöyledir,
Kod: Tümünü seç
DELIMITER $$;
CREATE FUNCTION fncKareAl (sayi1 INT)
RETURNS INT
BEGIN
RETURN sayi1 * sayi1;
END$$
DELIMITER ;$$
örnek olarak şöyle kullanalım , tblDeneme tablomuzda sayi adınde bir INT alanımız olsun ve select işlemiyle bu sayının karesini alalım.
Kod: Tümünü seç
SELECT fncKareAl(sayi) , alan1,alan2 from tbldeneme
VIEW
MySQL de basitçe bir view şöyle tanımlanır,
Kod: Tümünü seç
CREATE VIEW vDeneme AS (select *from tblDeneme)
Kod: Tümünü seç
select *from vDeneme
MySQL de her tabloya INSERT , DELETE , UPDATE olaylarının sonrasında ve Öncesinde çalışacak şekilde AFTER / BEFORE özellikli Trigger tanımlası yapılabilir,
tblDeneme tablomuzun alan1 sahası NULL ise bu alana "BOŞ" yazıcak INSERT işleminden önce çalışacak basit bir TRIGGER şu şekilde yazılabilir,
Kod: Tümünü seç
DELIMITER $$;
CREATE TRIGGER trgKontrol BEFORE INSERT tblDeneme
FOR EACH ROW
BEGIN
IF NEW.alan1 ISNULL then NEW.alan1="BOŞ";
END IF;
END $$
DELIMITER;$$
İyi çalışmalar.