Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Saklı Prosedürler (Stored Procedures) kalibi Create Procedure Procedure_Adi [Parametre_Listesi] As Procedure_Bloğu Create Proc Procedure_Adi [Parametre_Listesi]

Benzer bir sunumlar


... konulu sunumlar: "Saklı Prosedürler (Stored Procedures) kalibi Create Procedure Procedure_Adi [Parametre_Listesi] As Procedure_Bloğu Create Proc Procedure_Adi [Parametre_Listesi]"— Sunum transkripti:

1

2 Saklı Prosedürler (Stored Procedures) kalibi Create Procedure Procedure_Adi [Parametre_Listesi] As Procedure_Bloğu Create Proc Procedure_Adi [Parametre_Listesi] As Procedure_Bloğu

3 Saklı Prosedürler (Stored Procedures) cagirilmasi Execute (Saklı Prosedür Adı) [parame1, parametre 2 …]

4 Saklı Prosedürler OUTPUT PARAMETERS : Stored Procedure'ler OUTPUT parametrelerle dışarıya değer döndürebilir. Dışarıya dönen bu değer çoğu zaman programcının diğer işlemlerinde kullanılabilmek ya da matematiksel hesaplamaların sonuçlarını öğrenmek amacıyla kullanılırlar. Parametre tanımlanmaları Input parametrelerdeki gibi olmakla beraber tek fazlası hem Stored Procedure'ün oluşturulma tarafında hem de Execute tarafında dışarıya değer döndürecek parametrenin yanına OUTPUT yazılmasıdır. Ayrıca, Execution tarafında OUTPUT ifadesi yazılmaz ise stored procedure sorunsuz çalışacak fakat dışarıya bir değer döndürmeyecektir. Ayrıca, ek olarak; Output olacak parametreler tanımlanırken veritiplerinin "text" ve "image" olmaması gerektiği unutulmamalıdır. Output parametreler kullanarak bir matematiksel bir örnek verelim :

5 Saklı Prosedürler OUTPUT PARAMETERS : CREATE PROC MakaleOutput @Eleman1 decimal, @Eleman2 decimal, @Eleman3 decimal, @Sonuc decimal OUTPUT AS SET @Sonuc = (@Eleman1 * @Eleman2) + @Eleman3 GO

6 Saklı Prosedürler return Önce procedure’ümüzü biraz degistirelim. Ayni ad ve soyadda baska biri varsa kayit yapmasin ve geriye 0 degeri döndürsün. Eger yoksa kayit yapsin ve bize 1 degeri döndürsün. CREATE PROCEDURE sp_Deneme_Ekle (@AD NVARCHAR(20),@SOYAD NVARCHAR(20)) AS Declare @kayitkontrol int Declare @SONUC int Set @kayitkontrol=select count(*) from DENEME_TABLO where AD=@AD and SOYAD = @SOYAD if(@kayitkontrol = 0) begin INSERT INTO DENEME_TABLO(AD,SOYAD) VALUES(@AD,@SOYAD) set @SONUC = 1 end else begin set @SONUC =0 end return @SONUC GO

7 trigger Create trigger trigger isim on İşlemYapılanTabloİsmi after veya for delete,update,insert as Kodlar

8 trigger Bir tabloda insert,delete ve update işlemleri gerçekleştiğinde devreye giren yapılardır. Bu işlemler sonucunda veya bu işlemler sürerken devreye girerler

9 After ile trigger CREATE TRIGGER bot_trigger ON bot --hangi tablo uzerinde calisacagi With Encryption after update,delete,insert-- insert update delete AS print 'islem' go

10 For ile trigger CREATE TRIGGER bot ON bot --hangi tablo uzerinde calisacagi for update,delete,insert-- insert update delete AS print 'islem' go

11 INSTEAD OF TRIGGERLAR Delete,update ve insert işlemleri yerine şu işlemleri yap, gibisinden bir amaca hizmet ederler. Şimdi aşağıdaki örnek triggerı inceleyiniz.Delete işlemi yapıldığın da çalışacak olan trigger,aslında delete işlemi yapmayacaktır.Onun yerine as komutundan sonraki işlemi yapacaktır. CREATE TRIGGER botkisitla ON bot --hangi tablo uzerinde calisacagi instead of update,delete,insert-- insert update delete AS print 'islemengellendi' go

12 View Nedir? SQL de, View temel olarak sanal tablo(geçici ile sanal tablo farklı kavramlar lütfen karıştırmayın) diye geçiyor. Satır ve sütunları olan gerçek tablo gibidir. İçerisinde sadece SQL Fonksiyonlarını, Join, Group By ve Where ifadelerini kullanabilirsiniz. Yapamadıkları yaptıklarından daha az bu yapamadıklarını yazımın en son bölümünde yer vereceğim. (örnekleri hayali tablolar üzerinde anlatacağım). SQL Query açıp aşağıdaki örnek kodları yazıp daha sonra execute,kısayolu f5, ettikten sonra çalışmış olacaktır.

13 kalip CREATE VIEW view_adi AS SELECT sütun_adları FROM tablo_adlari

14 CREATE VIEW OnSekizYasindanBuyukKullanicilar AS SELECT kullaniciAdi, YasadigiYer,Yas FROM Kullanicilar WHERE Yas>17

15 Şifreli View Oluşturma (With Encryption) CREATE VIEW SifreliView With Encryption AS SELECT kullaniciAdi, YasadigiYer,Yas FROM Kullanicilar WHERE Yas<17

16 create view botdenizci1 With Encryption as select b.b_adi,d.d_adi,d.yasi,d.derece,b.rengi,r.gun from bot b, denizci d, rezerve r where r.bid=b.bid and r.did=d.did

17 View Güncelleştirme (Alter View) Güncelleştirmek için alter ifadesinden sonra güncelleştirmek istediğimiz türü seçiyoruz burada view oluyor ve en son olarak View adını yazıyoruz. Kodları değiştirten sonra çalıştırmayı unutmayın. ALTER VIEW OnSekizYasindanBuyukKullanicilar AS SELECT kullaniciAdi, Yas FROM Kullanicilar WHERE Yas>17 View Silme (Drop View) Aslında Create, Alter, Drop SQL ifadeleri olduğu için tablo, view, fonsiyon, procedur işlemlerinde aynı şekide kullanılıyor, yani view e özel durum söz konusu değil. DROP VIEW OnSekizYasindanBuyukKullanicilar

18 View larda Ne Yapılmaz Yukarıda söylediğim gibi aslında view lerin yapamadıkları daha fazla. Order By kullanamazsınız. İsimsiz kolon bırakamazsınız. Örneğin Sum fonsiyonunu kullanacaksınız As ile kesin bir isim vermek zorundasınız. Birden fazla sorgu yazamazsınız yani sadece bir select ile başlayan bir cümle yapabilirsiniz. T-SQL kullanamazsınız Insert, Update veya Delete kullanamazsınız Herhangi bir parametre yollayamazsınız.

19 Scalar Functions Scalar functions tek bir değer döndüren fonksiyonlardır. Parametre olarak Color değerini alan ve rengi paremetre olarak belirttiğimiz ürünlerin kayıt sayısını döndüren bir scalar function gerçekleştirelim;

20 kalip CREATE FUNCTION fonsiyonismi(gerekli degisken adlari)RETURNS donecekveritipi AS BEGIN T-sql ve sql komutlari yazilir end

21 CREATE FUNCTION GetProductCount(@color NVARCHAR(20)) RETURNS INT AS BEGIN DECLARE @count INT; SELECT @count=COUNT(*) FROM Production.Product WHERE Color=@color RETURN @count END SELECT dbo.GetProductCount('Silver') Fonksiyonu çağırmak için şu T-SQL komutunu kullanıyoruz;

22 CREATE FUNCTION NetMaasHesapla ( @BurutMaas numeric(10,2) ) RETURNS numeric(10,2) AS BEGIN DECLARE @NetMaas numeric(10,2) IF (@BurutMaas > 5000) SET @NetMaas = @BurutMaas*0.80 ELSE SET @NetMaas = @BurutMaas*0.85 RETURN @NetMaas END

23 Table-Valued Functions CREATE FUNCTION GetProducts(@color NVARCHAR(20)) RETURNS @retProducts TABLE( ProductID INT PRIMARY KEY NOT NULL, [Name] NVARCHAR(50), Color NVARCHAR(20), ListPrice SMALLMONEY ) AS BEGIN INSERT @retProducts SELECT ProductID,[Name],Color,ListPrice FROM Production.Product WHERE Color=@color RETURN; END SELECT * FROM dbo.GetProducts('Silver') Table-Valued function’ı kullanmak için şu ifadeyi kullanabiliriz;

24 CREATE FUNCTION alii ( @yasi int ) RETURNS TABLE AS RETURN ( SELECT d_adi,derece from denizci where yasi=@yasi ) GO

25 CREATE FUNCTION aliii9 ( @yasi int ) RETURNS @mytable TABLE ( adi nvarchar(50), derece int ) AS begin insert @mytable SELECT d_adi,derece from denizci where yasi=@yasi RETURN end GO

26 Prosedür ile Fonksiyon arasındaki Temel Farklar: Saklı Yordam (SY)Kullanıcı Tanımlı Fonksiyon (KTF) Select ifadesi içinde kullanılamazSelect ifadesi içinde kullanılabilir Genellikle bir işi gerçekleştirmek için kullanılır Genellikle bir hesaplama için kullanılır Değer döndürmesi şart değildirMutlaka değer döndürmelidir Tüm veri türlerini döndürebilirImage gibi bazı veri türlerini döndüremez Daha fazla girdi parametresi alabilir (21000 adet) En fazla 1023 girdi parametresi alabilir Geçici tabloları kullanabilirGeçici tabloları kullanamaz Dinamik SQL yürütebilirDinamik SQL yürütülemez Hata İşleme desteği vardırHata işleme desteği yoktur (RAISEERROR veya @@ERROR kullanılamaz) Non-Deterministik fonksiyonlar kullanılabilir GETDATE() gibi non-deterministik fonksiyonlar kullanılamaz

27


"Saklı Prosedürler (Stored Procedures) kalibi Create Procedure Procedure_Adi [Parametre_Listesi] As Procedure_Bloğu Create Proc Procedure_Adi [Parametre_Listesi]" indir ppt

Benzer bir sunumlar


Google Reklamları