Yapısal Yordamlar etiketine sahip kayıtlar gösteriliyor.
Yapısal Yordamlar etiketine sahip kayıtlar gösteriliyor.

SQL Server'da Stored Procedure Temel Örnekler

okul adında bir veritabanı oluşturalım ve aktif çalışılacak şekilde belirleyelim.
CREATE DATABASE okul
USE okul

Oluşturduğumuz veritabanı içerinde ogrenci adında bir tablo yaratalım ve tabloya ait veri tiplerini belirleyelim.
CREATE TABLE ogrenci
(
adi nvarchar(20),
soyadi nvarchar(25),
ogr_no numeric(10),
bolum nchar(5),sehir nvarchar(30)
)

Oluşturduğumuz ogrenci tablomuzu kontrol amaçlı "liste" adında bir prosedür yazalım ve çalıştıralım.
CREATE PROCEDURE liste
AS
SELECT * FROM ogrenci

EXEC liste

Oluşturduğumuz ogrenci tablomuza  veri ekleme amaçlı "ekle" adında bir prosedür yazalım ve çalıştıralım.
CREATE PROCEDURE ekle
@isim nvarchar(20),
@sisim nvarchar(25),
@num numeric(10),
@bol nchar(5),
@il nvarchar(30)
AS
INSERT INTO ogrenci (adi,soyadi,ogr_no,bolum,sehir)
values(@isim,@sisim,@num,@bol,@il)


EXEC ekle 'İbrahim','BAYRAKTAR',3005,'BLG','YOZGAT'

Benzer şekilde eklediğimiz kayıtları silebilmek için bir "sil" prosedürü yazalım ve çalıştıralım.
CREATE PROCEDURE sil
@id numeric(10)
AS
DELETE FROM ogrenci WHERE ogr_no=@id

EXEC sil 3005

Eklemiş olduğumuz veriler üzerinde id belirterek kolaylıkla şehir kaydını değiştirebileceğimiz "guncelle" adında prosedürü yazalım ve çalıştıralım.
CREATE PROCEDURE guncelle
@il nvarchar(30),
@id numeric(10)
AS
UPDATE ogrenci SET sehir=@il
WHERE ogr_no=@id

EXEC guncelle 'ANKARA',3005

tablomuzda arama yapmak amacıyla kullanılacak basit bir arama prosedürü yazalım ve çalıştıralım.
CREATE PROCEDURE ara
@isim nvarchar(20)
AS
SELECT * FROM ogrenci  WHERE adi LIKE '%'+@isim+'%'

EXEC ara 'ib'

SQL Server'da Stored Procedure

Genel Yapısı
CREATE PROCEDURE veya CREATE PROC prosedürAdı
   [WITH Seçenekleri]
AS
   yazılacak procedure (SQL ifadeleri)
GO
CREATE PROCEDURE
veya
CREATE PROC
deyimi ile başlıyoruz ve prosedürümüzün ismini yazıyoruz.WITH seçeneği  stored procedure’un içinde bulunan kaynak kodlarını gizlemek için kullanılır. İsteğe bağlıdır. CREATE PROCEDURE ile AS deyimleri arasına parametreli stored prosedürler için değişken tanımlaması yapılır. Parametresiz prosedürler için herhangi bir tanımlama yapılmaz, AS yazılarak devam edilir. AS’den sonra prosedürün içine yazacağımız SQL ifadelerini yazarız ve GO deyimini de ekleyerek prosedürümüzü tamamlamış oluruz.  GO deyimi zorunlu değildir. Fakat genel kullanımda terchi edilmektedir.

Procedure yazıldıktan sonra çalıştırmak için "F5"
Stored Procedure'ümüzü tekrar çağırmak için:

EXEC prosedürAdı

Stored Procedure'ler SQL Serverda resimdeki konumda bulunmaktadır.


NOT: CREATE PROCEDURE ifadesinin altında CREATE DEFAULT, CREATE RULE, CREATE TRIGGER, CREATE VIEW ve CREATE PROCEDURE ifadeleri kullanılamaz. Bir stored procedure oluşturulurken, bu procedure'ün içinde DEFAULT, RULE, TRIGGER, VIEW ve başka bir PROCEDURE oluşturulamaz. Bir stored procedure yaratılırken içinde bu belirtilenler dışındaki objeler yaratılabilir.

NOT:  
Stored Procedure oluşturabilmek için: 
System Administrator (sysadmin) 
Database Owner (db_owner)
Data Definiton Language Administrator (db_ddladmin) 
rollerine yada CREATE PROCEDURE  izni verilmiş bir role sahip olunmalıdır.

İlk Procedure'ümüzü Yazalım ve Çalıştıralım


Stored Procedure Nedir?

Prosedür, belli bir işlevi yerine getirmek için özellikle yapılandırılmış program parçacıklarıdır. 

Stored Procedure Database de tutulan ve ilk derlemeden sonra bir daha derlenmeye ihtiyaç duyulmayan SQL ifadeleridir. Kısaca SQL Server üzerinde barındırılan, T-SQL komutları ile hazırladığımız işlemler bütününün çalıştırılma anında derlenmesi ile bize bir sonuç üreten SQL Server bileşenidir. SP olarak anılırlar.
  • Bir prosedür, başka bir prosedür içerisinde çağrılabilir.
  • Bir programlama dilindeki fonksiyonlar gibi parametre alabilirler. 
  • Bu parametrelere göre bir sorgu çalıştırıp cevap gönderilirebilir.  
  • Stored Procedure'ler database server'ında saklanmasından dolayı daha hızlı çalışırlar. 
  • Bir stored procedure ilk çalıştırıldığı zaman derlenir. Bir daha çalıştırılınca derlenmeden çalışırlar. 
  • Bir SQL komutu çağrıldığında ayrıştırma , derleme ve çalıştırma aşamalarından geçmektedir.
  • Stored Procedure'ler önceden derlenmiş olduğu için , normal kullandığımız bir SQL sorgusunda olduğu gibi bu 3 aşamadan geçmez, bu özelliği sayesinde programımızın performansı artmaktadır ve ağ trafiğini de azaltmış oluruz, istemci tarafından bir çok satıra sahip SQL komutunun sunucuya gitmesindense, sadece saklı yordamın adının sunucuya gitmesi ağı daha az meşgul etmiş olur. 
  • Bir kez yazıp tekrar ve tekrar kullandığımız için modüler bir yapıda program geliştirilmesi sağlanır. 
  • Stored Procedure'lerin diğer bir özelliği ise programlama deyimleri içermesidir. if, next, set vs..  
  • Stored Procedure'ler sadece giriş ve çıkış parametreleri uygulama katmanında göründüğü için daha güvenilirdir. 

Stored Procedure Tipleri : 
  • Extended Stored Procedure: DLL'ler tarafından, SQL Server dışında kullanılan stored procedure'lerdir. xp ifadesi ile başlayan bu tür stored procedure'ler, bazı system stored procedure'leri tarafından da çağrılarak kullanılabilir.
  • CLR Stored Procedure: CLR ortamında herhangi bir dili kullanarak da Stored Procedure'ler geliştirilen bir tür Stored procedure çeşididir.
  • Sistem Stored Procedure : sp_ ön eki ile başlarlar ve master veri tabanında tutulur.  
  • Kullanıcı Tanımlı Stored Procedure : Programcının programladığı stored procedurlerdir.