SAKLI YORDAMLAR (STORED PROCEDURE)

Slides:



Advertisements
Benzer bir sunumlar
.NET FRAMEWORK -MASAÜSTÜ VE SUNUCU YAZILIMLARI
Advertisements

SGB.NET’İN TEKNİK ALTYAPISI
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
Stored Procedure Öğr.Gör.Metin Akbulut.
T sql-diğer komutlar Metin Akbulut.
COME 339 JAVA-SQL BAĞLANTISI
III.Oturum: SQL ile Verileri İşlemek
SQL (Structured Query Language)
Bölüm 2: Program Denetimi
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL de Değişken Tanımlama
VERİ TABANI ve YÖNETİMİ
Excel’de VBA programlama (Visual Basic Application) Ders 4
Tek Tablo İçinde Sorgulamalar
Çerez(Cookie) Kullanımı Oturum Yönetimi
T-SQL-2.Konu Akış Kontrolleri.
VERİ TABANI ve YÖNETİMİ
Veri Tabanı Yönetim Sistemleri
BÖLÜM 6 SQL SERVER KOMUTLARI.
Tetikleyici. Nedir? Bir tablo üzerinde Ekleme silme ve güncellemeye bağlı olarak tetiklenip çalışan SQL kodlarıdır. Genel amacı veri bütünlüğünü korumaktır.
Management Studio Kullanımı
VIEW (BAKIŞ) OLUŞTURMA
ÖRNEKLER. musteri Id adi soyadi mus_satis Id barkod adet Urunlar barkod urun_adi kodu fiyati Stok_hareket tarih barkod gelen giden.
PARAMETERELERLE ÇALIŞMAK. Prosedürler, dışarıdan girdi parametreleri (input) ile değer alabilirler ya da dışarıya değer döndürmek üzere çıkış parametreleri(output)
SQL’e Giriş ve SELECT Komutu
SQL de Değişken Tanımlama
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 8: Windows Formları
VERİTABANI ve YÖNETİMİ
Sibel SOMYÜREK SQL Görev. SQL – 14a Egitselyazilim veri tabanındaki içerik tablosuna yeni bir kayıt ekleyin,
Bilgisayar Programlama
Görsel Programlama II Ders 5 Öğr.Gör. Mustafa KARABULUT.
SQL SERVER STORED PROCEDURE
Veritabanı Yönetim Sistemleri-I
VERİ TABANI ve YÖNETİMİ
SQL Komutları (2) Uzm. Murat YAZICI.
Bilgisayar Mühendisliği Bölümü
SQL’ e Giriş Uzm. Murat YAZICI.
Gizem Tanış Bozok Üniversitesi Öğr. Görevlisi.  Veri erişimi için ADO.NET kodunu yazmak ve yönetmek zordur.  Microsoft, uygulamada veritabanı aktivitelerini.
Kullanıcı Seçeneklerini Güncelleme Kullanıcı güncelleme işlemi konsol ve grafik ortamdan yapılabilir. Komut Satırı ile Kullanıcı Seçeneklerini Güncelleme.
GÜVENL İ K. Sunucu Seviyesinde Güvenlik Master Veritabanı (Kullanıcının gerekli yetkileri var mı?) Authentication Mod ◦ Windows Authentication Mod  Varsayılan.
T-SQL 3.K ONU Tablo Tipi Değişkenler. T ABLO TIPI DEĞIŞKENLER KULLANMAK T-SQL de dizi tanımlama nasıl yapılır? Bu sorunun cevabı olarak tablo tipi değişkenleri.
Veri Tabanı Yönetimi Dersi 7. Laboratuvarı Arş. Gör. Pınar CİHAN.
View View’ler select ifadesi ile tanımlanmış sanal tablolardır. Temel amacı base tabloların içerisinden veri kümesi getirip ortaya çıkan sonucu sanal.
 Stored Procedure kısaca SQL sorgularını isteğimize göre hazırlayıp kullanıma hazır veri tabanı nesnesine çeviren bir araçtır.  Stored Procedure, Türkçeye.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
Öğretim Görevlisi Alper Talha Karadeniz Veri Tabanı 2
Veri Tabanı Yönetimi Dersi 1. Laboratuvarı
Bilgisayar Mühendisliği Bölümü
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
ÖRNEK BİR VERİTABANI TASARIMI VE NORMALİZASYONU
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
VIEW lerle çalışmak 11.BÖLÜM.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
ACTIVE DIRECTORY.
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
TETİKLEYİCİ ( Trigger)
Tablo Tipi Değişkenler
© Marmara Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi
14.DERS Örnekler, Sorular BUKET DOĞAN.
SQL SERVER STORED PROCEDURE
Veri Tabanı Temel Kavramlar.
Stored Procedure Öğr.Gör.Metin Akbulut.
SQL Server - Triggers.
VERİ TABANI II- 4.HAFTA ALT SORGULAR Türetilmiş ve İLİntİlİ tablolar
SQL Server - Stored Procedures
NİŞANTAŞI ÜNİVERSİTESİ
Intersect Tablo1 Sno Ad Soyad 1 Ali Ak 2 Veli Kara 3 Can Mor Tablo2
Transaction.
Sunum transkripti:

SAKLI YORDAMLAR (STORED PROCEDURE)

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.

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.

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.

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.

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

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.

Ö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.

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

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.

Ö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.

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.

Ç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).

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.

Stored Procedure Oluşturmak SP’ün oluşturulma şekli aşağıdaki gibidir. CREATE PROC [ EDURE ] prosedür_adı AS T-SQL ifadeleri GO

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.

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.

SORULAR:

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.

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.

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.

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ı

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.

create proc Utoplam -- Giriş parametreleri @sayi1 int, @sayi2 int, --Geridönüş parametreleri @toplam int output as select @toplam=@sayi1+@sayi2 go declare @sayi1 int declare @sayi2 int declare @toplam int select @sayi1 =10 select @sayi2 =12 exec Utoplam @sayi1,@sayi2,@toplam output select @toplam

Ö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.