1 / 32

VERİ TABANI ve YÖNETİMİ

VERİ TABANI ve YÖNETİMİ. Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü. BÖLÜM - 9 -. STORED PROCEDURE. Genel Bakış…. 3. BİL 301 - Veri Tabanı ve Yönetimi. Stored Procedure (SP) Extended Stored Procedure CLR Stored Procedure’ler Sistem Stored Procedure’leri

Download Presentation

VERİ TABANI ve YÖNETİMİ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VERİ TABANI ve YÖNETİMİ Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü

  2. BİL 301 - Veri Tabanı ve Yönetimi BÖLÜM -9- STORED PROCEDURE

  3. Genel Bakış… 3 BİL 301 - Veri Tabanı ve Yönetimi • Stored Procedure (SP) • Extended Stored Procedure • CLR Stored Procedure’ler • Sistem Stored Procedure’leri • Kullanıcı Tanımlı Stored Procedure’ler • Stored Procedure’lerin Çalıştırılması • Stored Procedure’lerin Oluşturulması • Stored Procedure’lerde Parametre Kullanmak

  4. 9.1. Stored Procedure 4 BİL 301 - Veri Tabanı ve Yönetimi Prosedür, belli bir görevi yerine getirmek için yazılmışprogramparçacıklarıdır. Başka bir deyişle, herhangi bir işleviyerinegetirmek için yazılan kodların bir paket içerisindetutulmuşhalidir. Bir prosedür başka bir prosedür tarafından daçağrılabilmektedir. Bu da, sık kullanılan işlemlerin bir defayazılarak programın akışına göre defalarca kullanılmasınısağlamaktadır. Böylelikle kod yazımı ve programlama işlemikolaylaştırılmış olmaktadır.

  5. 9.1. Stored Procedure(devam…) 5 BİL 301 - Veri Tabanı ve Yönetimi Stored Procedure’ler diğer programlama dillerindekifonksiyonlarla aynı işleve sahiptir. Oluşturulan bir StoredProcedure’e ana program içerisinde bir komut ileulaşılmaktadır. Aynı komut defalarca verilerek procedureçalıştırılabilmektedir. Dolayısı ile procedure defalarcayazılmayıp tek bir defa yazılıp çağrılmış olmaktadır.

  6. 9.1. Stored Procedure(devam…) 6 BİL 301 - Veri Tabanı ve Yönetimi Stored Procedure’ler, ilk defa 1980’li yıllarda Sybaseveritabanı sunucusunda kullanılmıştır. Sorguların öncedenhazırlanması ve veritabanı yönetim sistemi içerisindesaklanması en büyük özelliğidir. Dolayısı ile aynı uzaydaçalıştığı içinde daha hızlı sonuçlar alınabilmektedir. Bir SPoluşturulduktan sonra veritabanı içerisinde saklanmaktadır veihtiyaç duyulduğunda ise çağrılmaktadır.

  7. 9.1. Stored Procedure(devam…) 7 BİL 301 - Veri Tabanı ve Yönetimi • Stored Procedure’ler, oluşturma şekillerine göre dört’eayrılırlar: • Extended Stored Procedure’ler • CLR Stored Procedure’ler • Sistem Stored Procedure’leri • Kullanıcı Tanımlı Stored Procedure’ler

  8. 9.1.1. Extended Stored Procedure 8 BİL 301 - Veri Tabanı ve Yönetimi Genellikle .dll uzantısı şeklinde derlenmiş olan prosedürlerdir. T-SQL dışındaki C, C++, VisualBasic, Delphi gibi dillerde yazılıp derlenirler. Veritabanı uzayı dışında çalışırlar. Sistemiçerisinde hazır olarak gelen extended procedure’ ler genelliklexp_ öneki ile başlarlar, fakat sp_ öneki ile başlayanprosedürlerde vardır. Bu sistem extended prosedürlerimaster veritabanı içerisinde tutulmaktadır. Tam nitelikliisimleri db.sahibi.sp-ismi şeklindedir.

  9. 9.1.1. Extended Stored Procedure(devam…) 9 BİL 301 - Veri Tabanı ve Yönetimi Bütün sistem prosedürlerini master veritabanı altındagörebilirsiniz. Örneğin veritabanına bağlanan kullanıcılarılistelemek için aşağıdaki extended sistem prosedürükullanılabilir.

  10. 9.1.2. CLR Stored Procedure 10 BİL 301 - Veri Tabanı ve Yönetimi CLR (Common Language Runtime), Microsoft’un .NETmimarisi ile birlikte sunduğu yönetilebilir programlamaplatformudur. CLR ve .NET dilleri ile SP’ler, kullanıcı tanımlıfonksiyonlar ve Trigger’lar gibi nesneleri kodlamak mümkündür.Dolayısı ile SP ve diğer nesneleri kodlamak için CLR’ yeihtiyaç vardır. Bununla birlikle SP için çeşitli CLRprosedürleri’de beraberinde gelmektedir. Güvenlik ve denetimgibi konularda CLR SP’ler, SQL Server için büyük avantajsağlamaktadır.

  11. 9.1.3. Sistem Stored Procedure 11 BİL 301 - Veri Tabanı ve Yönetimi sp_ ile başlayan prosedürlerdir. Master veri tabanındatutulurlar. Extended Stored Procedure’de olduğu gibi tamadlarının yazılması zorunluluğu yoktur. Sadece adını yazmakyeterlidir. İstenirse tam ismi kullanılarak ta çalıştırılabilir fakatböyle bir zorunluluk yoktur.

  12. 9.1.3. Sistem Stored Procedure (devam…) 12 BİL 301 - Veri Tabanı ve Yönetimi Örneğin sp_helpdb sistem prosedürü veritabanı yönetimsisteminde yer alan veritabanlarını listeler.

  13. 9.1.4. Kullanıcı Tanımlı Stored Procedure 13 BİL 301 - Veri Tabanı ve Yönetimi • Programcı tarafından programlanan prosedürlerdir. • Konuolarak en fazla üzerinde duracağımız prosedürlerdir. • Geçerlioldukları duruma göre üç’ e ayrılırlar: • Geçici SP’ler, • Yerel SP’ler, • Uzak SP’ler.

  14. 9.1.4. Kullanıcı Tanımlı Stored Procedure (devam...) 14 BİL 301 - Veri Tabanı ve Yönetimi Geçici StoredProcedure’ler, özellikle SQL Server’ın eskisürümlerinde kullanılan bir türdür. Her oturum açıldığındaderlenmesi gereken SP’lerdir. Yerel SP’ler ise, kullanıcıtarafından oluşturulan ve bu ders boyunca üzerindeduracağımız SP’lerdir. Uzak SP’ler, dağıtık bir modeldetasarlanan ve uzaktaki bir sunucuda yer alan SP’lerdir.

  15. 9.2. SP’lerin Çalıştırılması 15 BİL 301 - Veri Tabanı ve Yönetimi • SP’lerin performansı açısından ne sağladığını anlamak içinkodlama aşamasından çalıştırılma aşamasına kadar bütünaşamaları çok iyi anlamak ve bilmek gerekmektedir. • Buaşamaları şöyle sıralayabiliriz: • Ayrıştırma (Parsing), • Derleme (Compiling), • Çalıştırma (Executing).

  16. 9.2. SP’lerin Çalıştırılması (devam…) 16 BİL 301 - Veri Tabanı ve Yönetimi Ayrıştırma işlemi sırasında SQL ifadelerinin geçerli olupolmadığı denetlenir. Veritabanı içinde tablo, VIEW gibi başkanesneler varsa ve bunlara gönderme yapılıyorsa, bu nesnelereait izinlerin olup olmadığı kontrol edilir. Sorgu ağacı yada sıraağacı denilen bir yapı ortaya çıkarılır. Ardından SP’nin ismisysobjects tablosuna kaydedilir. Daha sonra da syscommentstablosuna SP’nin kodları kaydedilir.

  17. 9.2. SP’lerin Çalıştırılması (devam…) 17 BİL 301 - Veri Tabanı ve Yönetimi Derleme aşamasında, bir önceki aşamada oluşturulan sıra ağacıele alınarak bir çalışma planı çıkartılır. Bütün çalışma planıüzerinde güvenlik ve yetkiler denetlenir. Bu çalışma planı,hangi aşamada hangi kontrollerin kullanılacağını veyatabloların kontrol edileceğini içermektedir.

  18. 9.2. SP’lerin Çalıştırılması (devam…) 18 BİL 301 - Veri Tabanı ve Yönetimi • Çalıştırma aşamasında, bir önceki aşamada elde edilen çalışmaplanı ele alınarak çalıştırma işlemi gerçekleştirilir. • Örneğin birSELECT ifadesi kullanılmışsa sorgu veri işlemeden sorumluDML yöneticisine iletilir. • Bir SP eğer ilk defa çağrılıyorsa, bu üç aşama gerçekleştirilir.Eğer daha önce çalıştırıldıysa sorgulama ağacı oluşturmaişlemleri yapılmaz ve oldukça hızlı bir şekilde SP’ninderlenmiş hali çalıştırılır. Bunun nedeni SP’lerin derlenmişbirer nesne olmasıdır.

  19. 9.3. SP’lerin Oluşturulması 19 BİL 301 - Veri Tabanı ve Yönetimi Bir kullanıcı tanımlı prosedür oluşturmanın genel biçimiaşağıda verilmektedir. CREATE PROC/PROCEDURE prosedür_adı AS SQL ifadeleri NOT: SP oluştururken PROC deyimi yada PROCEDUREdeyimi kullanılmaktadır.

  20. 9.3. SP’lerin Oluşturulması (devam…) 20 BİL 301 - Veri Tabanı ve Yönetimi Örnek-1: Öğrenciler tablosu aşağıda verilmektedir. Bu tabloyu göz önüne alarak ortalaması 50’nin üzerinde olan öğrencileri bulan bir Stored Procedure yazalım.

  21. 9.3. SP’lerin Oluşturulması (devam…) 21 BİL 301 - Veri Tabanı ve Yönetimi Yazılacak SP kodu aşağıdaki gibidir:

  22. 9.3. SP’lerin Oluşturulması (devam…) 22 BİL 301 - Veri Tabanı ve Yönetimi Oluşturulan SP’yi çalıştıralım. Bir prosedürü çalıştırmak içiniki yol vardır. Doğrudan SP’nin ismini yazabilirsiniz yadaexecSP_adi yazarak çalıştırabilirsiniz.

  23. 9.3. SP’lerin Oluşturulması (devam…) 23 BİL 301 - Veri Tabanı ve Yönetimi Örnek-2:Gün içerisinde yapılan satışları bulan bir SPoluşturalım. Bunun için tblSiparis ve tblSiparisDetay tablolarıaşağıda verilmiştir. tblSiparistblSiparisDetay

  24. 9.3. SP’lerin Oluşturulması (devam…) 24 BİL 301 - Veri Tabanı ve Yönetimi Oluşturulacak olan SP aşağıdaki gibi olacaktır.

  25. 9.3. SP’lerin Oluşturulması (devam…) 25 BİL 301 - Veri Tabanı ve Yönetimi SP çalıştırıldığında günlük satış yapılıp yapılmadığı aşağıdagörülmektedir.

  26. 9.4. SP’lerde Değişiklik Yapmak 26 BİL 301 - Veri Tabanı ve Yönetimi Bir SP’de değişiklik yapmak için ALTER komutukullanılmaktadır. ALTER komutu ile geçen dersimizdeanlatmış olduğumuz WITH ENCRYPTION komutu dakullanılabilmektedir. Bildiğiniz gibi WITH ENCRYPTION komutukodların başkaları tarafından görülmesini engellemektedir. ALTER komutunun genel kullanım biçimi aşağıdaki gibidir: ALTER PROCEDURE Prosedür_ismi AS SQL ifadeleri

  27. 9.4. SP’lerde Değişiklik Yapmak (devam…) 27 BİL 301 - Veri Tabanı ve Yönetimi Daha önce oluşturduğumuz günlük satış SP’si üzerideşifreleyerek değişiklik yapalım.

  28. 9.4. SP’lerde Değişiklik Yapmak (devam…) 28 BİL 301 - Veri Tabanı ve Yönetimi Sp_helptext ‘gunluk’ şeklinde çalıştırıp kodları görmekistediğimizde SP kodları görüntülenmeyecektir.

  29. 9.5. SP’lerde Parametre Kullanmak 29 BİL 301 - Veri Tabanı ve Yönetimi Standart prosedürlerde olduğu gibi SP’lerde de prosedürlereparametre gönderilerek bir sonuç üretilebilmektedir. Yanidışarıdan girdi parametreleri ile değer alabilmektedirler.Parametreli SP’ lerin genel kullanım biçimi şöyledir. CREATE PROCEDURE prosedür_ismi ( @parametre_ismi veri_tipi, …..) AS SQL ifadeleri

  30. 9.5. SP’lerde Parametre Kullanmak (devam) 30 BİL 301 - Veri Tabanı ve Yönetimi Örnek: Bir kullanıcı kodu alındığında o kullanıcıya ait sepette yer alan ürünleri görmek istiyoruz. Bu işlem için tblSepet ve tblUrun tabloları kullanılacaktır.

  31. 9.5. SP’lerde Parametre Kullanmak (devam) 31 BİL 301 - Veri Tabanı ve Yönetimi Buna göre yazılması gereken SP aşağıdaki gibi olacaktır.

  32. 9.5. SP’lerde Parametre Kullanmak (devam) 32 BİL 301 - Veri Tabanı ve Yönetimi Bu SP’nin çalıştırılması ise parametre verilerek aşağıdaki gibi olacaktır.

More Related