Microsoft Sql Server Stored Procedure İşlemleri-1

0
167

Merhaba bu yazımda Sql server üzerinden bazı temel işlemlerin nasıl yapıldığına dair açıklamalar ve örneklerden bahsedeceğim.

Öncelikle Stored Procedure dediğimiz kavramı açıklamak istiyorum. Bunlar bir görevi tamamlamak için yazmış olduğumu kod parçalarıdır. Örneğin bir tablo oluşturma işleminin sorgusunu biz hazır bir format haline getirip dışarıdan parametre alabilir bir forma dönüştürürsek bunu sp olarak kaydetme imkanımız vardır. Spler parametre aldıkları gibi kendi içlerinde de başka bir sp çağırabilirler. Performans açısından büyük verilerde çok hızlıdırlar.

USE "Database Name" 
GO
  
CREATE PROCEDURE  "Stored Procedure Name"
// Varsa parametrelerin declare edileceği bölüm  

AS
BEGIN

SET NOCOUNT ON;

// Yazacağımız Sorgu 
END

 

Yukarıda gördüğümüz gibi temelde normal sql sorguları gibi aynıdır yapıdadır ancak parametre alma durumlarında declare dediğimiz tanımlama işlemleri yapmamız gerekmektedir.

Stored Procedure Create

Örnek olarak bir tablo oluşturalım ardından o tabloya veri ekleyelim ve ardından bu verileri çekme işlemini yapacak spleri oluşturalım.

USE [berkaratcom]
GO
CREATE PROCEDURE [dbo].[sp_CreateTable]
AS
BEGIN
  SET NOCOUNT ON;

CREATE TABLE  tbl_test(
  [ad] [nvarchar](50) NULL,
  [soyad] [nvarchar](50) NULL,
  [yas] [int] NULL,
  [password] [nvarchar](50) NULL,
  [email] [nvarchar](50) NULL,
  
) ON [PRIMARY]
END

Bu sql sorgumuz bize tbl_test adında 5 tane parametresi olan bir tablo oluşturmaktadır. Stored procedur adımız ise sp_CreateTable olarak belirledik bu sorguyu execute ettiğimiz zaman Programmability>Stored Procedure yolunun altında procedure görünecektir.

Stored Procedure Select

Bu sql işleminde select yani çağırma işlemini gerçekleştireceğiz.

Burada dikkat edilmesi gereken nokta iki farklı tablo ile işlem yapmaktayız. Bu tabloların birine “a” diğerine “b” olarak tanımlıyoruz. Ardından a. veya b. şeklinde o tablonun istenilen sütununu çağırabiliyoruz. Böylece bir sorguda iki tabloya hükmedebiliyoruz. Bu sayede birbirleriyle ilişkili tablolar da oluşturabilmekteyiz.

USE [berkaratcom]
GO
CREATE PROCEDURE [dbo].[sp_select]
AS
BEGIN

  SET NOCOUNT ON;

 SELECT 
   a.film_ad,
   b.koltuk_sayisi,
   a.dolu_koltuk sayisi
 	  
  FROM 
     dbo.tbl_koltukdurumu a,
     dbo.tbl_koltukdurumu b
 WHERE
    a.film_id=b.film_id

 
END

 

USE [berkaratcom]
GO

DECLARE	@return_value int

EXEC	@return_value = [dbo].[sp_select]

SELECT	'Return Value' = @return_value

GO

 

Stored Procedure Insert

Daha sonra tablolar kısmında tbl_test tablomuza insert işlemi gerçekleştirecek bir procedure oluşturalım.

USE [berkaratcom]
GO

CREATE PROCEDURE  [dbo].[sp_insert]

    @ad nvarchar(50),
    @soyad nvarchar(50),
    @yas int, 
    @password nvarchar(50),
    @email nvarchar(50) 
    	   
AS 
BEGIN 
  SET NOCOUNT ON;
   
  INSERT INTO [dbo].tbl_test
           ([ad]
           ,[soyad]
           ,[yas]
           ,[password]
           ,[email])
 
     VALUES
            ( 
         @ad,@soyad,@yas,@password,@email )
     
END

Buradaki sql örneğimizde  sp_insert adından bir sp oluşturuyoruz ve ardından declare dediğimiz parametreleri tanımlama yapıyoruz. Burada dikkat edilmesi gereken nokta parametrelerin değerleri ile tablodaki değerler aynı olmalıdır aksi takdirde hata mesajı ile karşılaşırız.

USE [berkaratcom]
GO

DECLARE	@return_value int

EXEC	@return_value = [dbo].[sp_insert_test]
    @ad = 'Berk',
    @soyad = 'Arat',
    @yas = 25,
    @password = '123456',
    @email = N'hello@berkarat.com'

SELECT	'Return Value' = @return_value

GO

Ardından sql querry modundan da yapacağımız bu sorgu ile işlemimizin doğru olup olmadığını test edebiliriz. Eğer sorgusuz yapılmasını istiyorsanız modify seçeneği ile de yapılabilir.

Ek bilgi 

nvarchar ile varchar arasındaki fark şudur :

varchar : latif alfabesi için kullanılır ve her karakter için 1 byte veri boyutuna sahiptir.

nvarchar : Arap, Çin alfabeleri gibi Latin olmayan alfabeleri de kapsamaktadır ve her karakter için 2 byte veri boyutuna sahiptir.

 

 

CEVAP VER

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.