SQL Stored Prodecure – Saklı Yordam

SQL Stored Prodecure – Saklı Yordam

4 Eylül 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 36
Yaklaşık okuma süresi : 3 DK
SQL Table-Valued Functions – Tablo Fonksiyonları
SQL String Functions -  Metin Fonksyionları
SQL Stored Prodecure – Saklı Yordam
5 (100%) 2 Oy

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

SQL Table-Valued Functions – Tablo Fonksiyonları
SQL String Functions -  Metin Fonksyionları

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım.

Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir.

Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.