Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
SAKLI YORDAMLAR (STORED PROCEDURE)
2
Prosedür ne demektir? Prosedürler belirli işlemleri gerçekleştirmek üzere oluşturulan ve ayrı bir kod içerisinde yazılan özel bloklardır. Prosedürlerin oluşturulmasının nedeni, sıkça yapılan işlemlerin bir defa yazılarak program akışına göre tekrar tekrar kullanılmasını sağlamaktır. Saklı prosedürler, bir çok gelişmiş programlama dilindeki fonksiyon yapılarına karşılık gelir.
3
Prosedür ne demektir? Normal SQL ifadeleri her çalıştırılmasında derlenmektedir. Doğal olarak sorgulama hızlarında azalma meydana gelir. SP’ler ilk oluşturulduklarında derlenirler ve sonraki kullanımlarda tekrar derlemeye gerek kalmadan çalıştırılabilirler. SP’ler uygulama geliştirme için kullanılan programlama dillerinde de doğrudan kullanılabildiği için her defasında sorgu yazmaya gerek kalmaz.
4
Prosedür ne demektir? Birden fazla işlemi, paketlenmiş bir halde tek komut ile çalıştırmamız gerektiğinde SP kullanılır. Bir SP oluşturulduktan sonra, veritabanı sunucusunda saklanır. Her ihtiyaç duyulduğunda aynı SP defalarca çağrılabilir. Ağ bazlı uygulamalarda ağ trafiğini azaltır, sistem performansını arttırır.
5
SP’lerin Bazı Avantajları
1.SQL Server tarafından her SP bir kez derlenir ve sonrasında derleme yapılmadan doğrudan çalışır. SP’ler SQL ifadelerinden daha hızlı sonuç döndürürler. 2.Uzun SQL ifadeleri yerine tek satırlık SP ağın trafiğini azaltır. 3.Ağ trafiğini azalttığı için çok kullanıcı sistemlerde kilitlenmelerin azalmasını sağlar. 4.Kullanıcıların karmaşık ifadeler yazmasına gerek kalmaz. 5.Açık olarak yazılan SQL ifadelerine göre daha güvenlidir.
6
Oluşturulma şekillerine göre SP’ler dört çeşittir.
1. Extended Stored Procedure 2.CLR Stored Procedure 3. System Stored Procedure 4. Kullanıcı Tanımlı Stored Procedure
7
1. Extended Stored Procedure
Harici bir dil kullanılarak hazırlanmış ve DLL dosya içerisinde barındırılan fonksiyonlardan oluşur. “master” veritabanı üzerinde tanımlıdır ve tüm veritabanlarında kullanılabilir. Adları “xp_” ile başlar. Ama “sp_” ile başlayan prosedürler de vardır. Xp_sendmail SQL sunucu üzerinden mail göndermek için kullanılabilir.
8
Örnekler: xp_fileexist 'C:\deneme.mdf’
SQL ifadesi ‘deneme.mdf’ dosyasının C sürücüsünde olup olmadığını kontrol edecektir. xp_create_subdir 'C:\deneme2‘ SQL ifadesi C: sürücüsünde deneme2 isminde bir klasör oluşturacaktır.
9
T-SQL’in desteklemediği kod yazımlarında bu programlama dilleriyle kodlar yazılır.
Güvenlik ve denetim gibi konularda CLR SP’ler SQL Server için avantaj sağlar. 2.CLR Stored Procedure
10
3. System Stored Procedure
SQL Server üzerinde tanımlı olarak gelen SP’lerdir. sp_ ile başlayan prosedürlerdir. “Master” veritabanında tutulurlar. ÖRNEKLER: 1.SP_ADDMESSAGE 50001,16 ,‘Otomatik artan sütün için değer girişi yapılmış.’ 50001 hata koduna ve 16 öncelik değerine sahip yeni bir hata mesajı tanımlayacaktır.
11
ÖRNEKLER: 2. SP_DETACH_DB ‘deneme’
Deneme ismindeki veritabanı sunucudan ayırmak için kullanılır. 3. sp_addlogin ‘can’ ,123 Go Sp_adduser ‘can’,’can’ Can isminde 123 şifresi ile bir oturum bilgisi tanımlanmış ve bu bilgiler doğrultusunda can kullanıcısı eklenmiştir.
12
4.Kullanıcı Tanımlı Stored Procedure
Programcının yazdığı prosedürlerdir. Geçerli oldukları yere göre üç tiptir: geçici, yerel veya uzak SP. Geçici SP özellikle SQL Server’in eski sürümlerinde kullanılan bir tür olup, her oturumda derlenmesi gerekiyordu. Yerel SP ise bolca üstünde duracağımız SP’lere verilen genel addır. Uzak SP, uzaktaki sunucuda yer alan SP için kullanılır.
13
Çalıştırılma Aşamaları
Bir SP’ün çalıştırılma aşamaları herhangi bir Query’nin çalıştırılma aşamalarıyla aynıdır. 1.SP’ ün bileşenleri parçalara ayrıştırılır (Parsing). Veri tabanı içerisinde table, view gibi başka nesnelere gönderme yapan referanslar varsa, geçerli olup olmadıkları kontrol edilir. 2.Kontrollerden geçen SP’ün adı sysobjects tablosuna, kodları ise syscomments tablosuna kaydedilir (Compilig).
14
Bu işlemlerle birlikte derleme işlemi yapılır
Bu işlemlerle birlikte derleme işlemi yapılır. Normalizasyon işlemleri olarak da anılan bu işlemler sonucunda, ağaç şeması elde edilir. Bu şema da sysprocedures tablosunda saklanır. 3.SP herhangi bir anda çağrıldığında, ilk kez çalışıyorsa bu işlemler gerçekleştirilir. İlk defa çağrılmıyorsa, kontrol, sorgulama ağacı oluşturma işlemleri yapılmaz ve oldukça hızlı bir şekilde SP’nin derlenmiş hali çalışır.
15
Stored Procedure Oluşturmak
SP’ün oluşturulma şekli aşağıdaki gibidir. CREATE PROC [ EDURE ] prosedür_adı AS T-SQL ifadeleri GO
16
Oluşturacağınız SP’ler ile sistemin SP’lerinin karışmaması için prosedür adlarının önüne “U” harfini ekleyiniz. Böylece, oluşturduğunuz SP’leri sistem SP’lerinden ayırt etmiş olursunuz. SP oluşturabilmek için sysadmin, db_owner veya dll_admin rolüne sahip olmanız gerekir. Bir SP; CREATE DEFAULT, CREATE RULE, CREATE TRIGGER ve CREATE VIEW ifadelerini içeremez. Ancak, her nesneden veri alabilir.
17
SORULAR: 1.Tüm müşteri içeriğini listeleyen SP oluşturunuz ve oluşturulan prosedürü çalıştırınız. 2. Dışarıdan girilen mno’ya göre müşteriyi listeleyen SP oluşturunuz( mno parametre olacak) ve prosedürü değişik mno girerek ayrı ayrı çalıştırınız. 3. Müşteri tablosuna veri ekleyen prosedür yazınız ve prosedürü çalıştırınız.
18
SORULAR:
19
4. Satis tablosuna veri giren bir prosedür oluşturunuz ve bu prosedürü kullanarak veri giriniz.
5.Müşteriler içinden 0532 ile başlayan telefonları seçen ve o müşterilerin sadece adını , soyadını ve telefon numarasını listeleyen SP yazınız. 6. SatisDetay tablosunu güncelleyen bir prosedür oluşturunuz. (sno ve u_no verilecek, miktar güncellenecek.) 7. Ürünün id’si verilen ürünün adını, kategorisini, fiyatını ve ne kadar satış yapıldığını listeleyen SP yazınız.
20
EXISTS VE NOT EXISTS fonksiyonu
EXISTS (sorgu) : içinde yazılı olan sorgunda bir yada birden fazla kayıt dönerse değeri true’dur. NOT EXISTS : exists fonksiyonun olumsuzudur. Örnek: sno isminde bir değişken tanımlayarak ona değer ataması yapalım satis tablosunda o numara ile kayıt varsa ‘Kayıt var’ ; eğer yoksa ‘Kayıt yok’ mesajı veren kodu yazınız.
21
Soru-1: Ürün tablosuna ürün ekleme yapılacaktır. Eklemek istenilen ürün stokta bitmiş (stok=0) ise stok miktarı güncellenecek eğer stokta bitmemiş (stok≠0) ise yeni kayıt olarak eklenecek SP kodunu yazınız. Soru-2: SatisDetay tablosunda kayıt varsa güncelleyen, yoksa yeni kayıt ekleyen prosedür oluşturunuz.
22
Soru-3: İki hesap arasında para transferi yapan bir prosedür oluşturunuz. Bakiye sıfırın altına inerse “bakiye yetersiz” mesajı versin, sıfırın altına düşmüyorsa para transferi gerçekleşsin. Kullanılacak parametreler: Gönderici hesabın nosu Alıcı hesabın nosu Gönderilen para miktarı
23
Değer Alıp-Veren Stored Procedure’ler
Değer alıp-veren saklı prosedürler, Query’den gönderilen değerleri alıp istenilen işleme tabi tuttuktan sonra elde edilen sonucu tekrar Query’e gönderen prosedürlerdir. Bu işlem için OUTPUT parametresi kullanılır. Örnek:1 Tanımlanan ve ilk değerleri verilen iki sayıyı SP’e göndererek toplamlarını SP ’de yapıp sonucu gönderildiği yerde görüntüleyen kodları yazınız.
24
create proc Utoplam -- Giriş int, --Geridönüş int output as select go int int int =10 =12 exec Utoplam output
25
Örnek:2 Fatura tablosunda veri değiştiren bir SP yazınız. ÜrünNo ve mno' su bilinen kayıtlarda miktar ve fiyatını değiştiren ve kaç kayıtın değiştiği bilgisi parametreden geri dönsün. Örnek:3 Örnek 2 deki prosedürü çalıştırınız.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.