SQL Server – Stored Procedure
Selamün Aleyküm Arkadaşlar;
Saklı prosedürler (Stored Procedure) sql cümleciklerinden oluşur. Bir nevi alt programlardır. Çalışması hızlıdır. Bunun sebebi bir kere derlenmeleridir.
Tanımlanması:
CREATE PROCEDURE ad parametreler AS BEGIN Komutlar END
Prosedürün çağırılması:
EXEC Proseduradi parametredegeri,...
Bir ogrenciler tablomuz olsun. Alanları sırasıyla Numara, Ad, Soyad, Bolum, Sinif, Sube olsun.
Bu tabloyu listeleyen bir procedür yazalım. Dışarıdan herhangi bir parametre almayacak.
CREATE PROCEDURE OgrenciListele AS BEGIN SELECT * FROM ogrenciler; END
Prosedürümüzü yazdık. Şimdi bunu çağıralım.
EXEC OgrenciListele
Dönen değer ogrenciler tablosundaki verilerdir.
Numarası girilen öğrencinin kaydını gösteren saklı prosedürü yazalım. Dışarıdan parametre alacak. Numara alanımızın türü int olduğu için parametremizin türü de int olacak.
CREATE PROCEDURE Ogrenci @no int AS BEGIN SELECT * FROM ogrenciler WHERE Numara=@no; END
Çalıştıralım.
EXEC Ogrenci 113602013
Numarası girilen öğrenciyi silen prosedürü yazalım.
CREATE PROCEDURE OgrenciSil @no int AS BEGIN DELETE FROM ogrenciler WHERE Numara=@no; END
Ad ve Soyadı girilen öğrenciyi getiren saklı prosedürü yazalım. İki tane parametre alacak. bir ad alanı için diğeri soyad alanı için.
CREATE PROCEDURE OgrenciBul @ad nvarchar(50), @soyad nvarchar(50) AS BEGIN SELECT * FROM ogrenciler WHERE Ad=@ad and Soyad=@soyad; END
Prosedürümüzü çağıralım.
EXEC OgrenciBul 'Çiğdem','KAYA'
Değişken tanımlama:
CREATE PROCEDURE procedureadi --@parametreadi turu(int, varchar(50),...) AS BEGIN --Declare @degiskenadi turu(int, varchar(50),...) --Komutlar END
Tanımlanmış bir değişkene tablonun alanından veri almak:
CREATE PROCEDURE proseduradi @no int AS BEGIN Declare @ad nvarchar(50), @soyad nvarchar(50) SELECT @ad=Ad, @soyad=Soyad FROM ogrenciler WHERE Numara=@no; END
Bir değişkene veri aktarmak için SET komutu kullanılır.
CREATE PROCEDURE proseduradi AS BEGIN Declare @degisken int SET @degisken = 10; END
Hayırlı günler. Sağlıcakla kalın.
Bu döküman www.ibasoglu.com’a aittir. Kaynak belirtmek suretiyle alıntı yapılabilir.