SQL Stored Prodecure – Saklı yordam , dersi ile sql eğitim setime devam ediyorum. Bu dersimizde Programlanabilirlik kısmının biraz daha derinlerine iniyoruz. Stored Procedure’nin Türkçe karşılığı saklı yordam olarak geçer. Bu işlemi genel olarak ard arda birden fazla işlem yapacağımız zamanlarda proje kısmında fazla kalabalık yapmasını istediğimiz durumlardan kullanırız. Yine her zamanki gibi tam olarak açıklayamasam da birazdan örnekleri gördüğünüzde demek istediğimi anlayacağınızı düşünüyorum.
SQL Stored Prodecure – Saklı yordam
Stored Prodecure’i kısaca SP’yi genelde insert update gibi işlemleri yapmak için kullanırız. Yani sadece bir select sorgusu ise konu, SP yapmak mantıksızdır. Bence yani. :)
Örnek verebilmek adına şöyle bir senaryo vereyim.
SATIŞLAR adında ve SATIŞLAR_TEMP adında iki tablomuz olsun. Satışlarımızı önce temp tablosuna aktarıp çeşitli hesaplamalar yaptırıp ana tablosuna tekrar yazacağımızı düşünelim.
Burada önce TEMP tablosunu önce sileceğiz. Sonra SATIŞLAR tablosundan TEMP tablosuna aktaracağız sonra da hesaplamaları yapıp verileri listeleyeceğiz. Burada bende bu tablolar olmadığından mantık olarak sorguları yazacağım. Yani kolonlar olmadan.. Aşağıda görebilirsiniz.
delete from SATISLAR_TEMP INSERT INTO SATISLAR_TEMP ( -- kolonlar ) select -- kolonlar from SATISLAR where Tarih >= '20180904 00:00:00' and Tarih <= '20180904 23:59:59' update SATISLAR_TEMP SET -- kolonlar -- hesaplarımızı yapıyoruz SELECT kolonlar from SATISLAR_TEMP
Şimdi gördüğünüz sorgu bir SP değil yani henüz değil. Senaryomuza göre bu işlemleri yapacağız. Şimdi SP’mize geçelim.
SQL Management Studio ‘da Database’imizi açtıktan sonra (Soldaki + ya basıp) Programmability > Stored Procedures > sağ tık > Stored Procedure yaparak yeni prosedür tanımlama ekranına geçiyoruz. Bizi böyle bir ekran karşılıyor.
-- ================================================ -- Template generated from Template Explorer using: -- Create Procedure (New Menu).SQL -- -- Use the Specify Values for Template Parameters -- command (Ctrl-Shift-M) to fill in the parameter -- values below. -- -- This block of comments will not be included in -- the definition of the procedure. -- ================================================ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> -- Add the parameters for the stored procedure here <@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, <@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0> AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2> END GO
Aşağıdaki gibi düzenliyoruz.
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE sp_Satislari_Hesapla @tarih_1 as Nvarchar(50) , @tarih_2 as Nvarchar(50) AS BEGIN END GO
Sonra hazırladığımız sorguları SP’mize ekliyoruz ve düzenliyoruz.
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE sp_Satislari_Hesapla @tarih_1 as Nvarchar(50) , @tarih_2 as Nvarchar(50) AS BEGIN DELETE FROM SATISLAR_TEMP INSERT INTO SATISLAR_TEMP ( 'kolonlar' ) SELECT 'kolonlar' AS KOLONLAR FROM SATISLAR WHERE Tarih >= @tarih_1 and Tarih <= @tarih_2 UPDATE SATISLAR_TEMP SET -- kolonlar -- hesaplarımızı yapıyoruz SELECT * FROM SATISLAR_TEMP END GO
Şuanda SP’miz hazır. F5 yaparak SP mizi oluşturuyoruz. Sonrasında kullanmak istediğimiz yerde aşağıdaki gibi yazarak kullanıyoruz.
exec sp_Satislari_Hesapla '20180904 00:00:00' , '20180904 23:59:59'
NOT: SP’nizde select sorgusu var ise direk bir datatable yada girdview’e atamasını yapabilirsiniz. Select sorgusu yok ise SP geri dönüş vermez.
Gördüğünüz Birbiri ile bağlantısı olan tüm işlemleri tek bir yerde topladık ve bir kerede tüm işleri yaptırmış olduk. SP kullanmasaydık proje kodları arasında ne kadar çile çekeceğimizi siz düşünün.
SQL Stored Prodecure – Saklı yordam dersimizde bu kadar dostlar. Diğer derslerimizde görüşmek üzere.
Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.
Sağlıcakla ve Takipte Kalın.
Yorumlar (1)