Parametre alan ve değer döndüren Stored Procedure Yazmak

Daha önce stored procedure üzerine farklı örnekler yapmıştık. Bu dersimizde parametre alan ve bir değer geri döndüren bir stored procedure yazma işlemini öğreneceğiz. Aşağıdaki yazım formatına baktığımızda prosedür adından sonra giriş ve çıkış paremetrelerini görmektesiniz. @degisken1 GİRİŞ parametresi, @değişken2 ise ÇIKIŞ parametresi olarak kullanılıyor.

CREATE PROC  procedere_adi
@degisken1 degiskentipi,
@degisken2 degiskentipi OUTPUT
AS BEGIN
...
...
...
END


Şimdi verdiğimiz departmanID bilgisinden departman adını bulan bir stored procedure oluşturalım. 

CREATE PROC  sp_departman_bul
@departmanID int,
@departman VARCHAR(50) OUTPUT
AS BEGIN
      select @departman=DEPARTMAN   from tbldepartman
      WHERE departmanID=@departmanID
END



Şimdi yeni bir Query ekranı açalım ve az önce oluşturduğumuz sp_departman_bul isimli stored procedure'ünü çalıştıralım. Hatırlarsanız bir stored procedure çalıştırırken EXEC komutundan sonra stored procedure adini yaziyorduk. Eğer parametre alıyorsa daha sonra parametreleri aralarına virgül koyarak yazıyoruz.

USE personeldb
GO
DECLARE @depadi VARCHAR(50)
EXEC sp_departman_bul 2,@depadi OUTPUT
SELECT @depadi



Şimdi de bir örnek daha yapalım, bu örneğimizde de istenilen bir departmanın minimum ve maksimum maaşını bulup döndürüyor. Tahmin edeceğiniz gibi departmanadi GİRİŞ, minimum ve maksimum değerleri ise ÇIKIŞ parametresi olarak yazılıyor. 

 
CREATE PROC sp_max_min_maas_bul
@dept VARCHAR(50),
@maxmaas DECIMAL(15,2) output, 
@minmaas DECIMAL(15,2) output
AS BEGIN
 
DECLARE @deptadi VARCHAR(50)
SELECT TOP(1)  @maxmaas = MAX(m.MAAS),  @minmaas= MIN(m.MAAS)
FROM  tbldepartman d, tblpersonel p, tblmaas m
WHERE p.personelID = m.personelID
AND d.departmanID= p.departmanID 
AND d.DEPARTMAN=@dept
GROUP BY d.DEPARTMAN
 
END


 
Şimdi SQL Server Enterprise Manager içinde yeni bir Query açıp yukarıdaki stored procedure'ü çalıştıralım. Yukarıdaki prosedüre bir parametre giriş olarak, iki parametre çıkış olarak kullanıldığı için önce bu paremetreleri içerecek değişkenleri tanımlıyoruz. Değişkenleri tanımlarken aşağıdaki formatı kullanıyoruz.

DECLARE @degiskenadi DegiskenTipi

 
Burada dikkat ederseniz C, Java, C# gibi programlama dillerinden farklı olarak T-SQL dilinde sadece DECLARE ifadesi değişken tanımlandığını belirtmek için eklenmiş, gerisi aynı şekilde.  Değişkenlere değer ataması yaparken de SET ifadesini kullanıyoruz. Alttaki gibi bir formatı kullarak değişkenlere atama yapıyoruz. 

SET @degiskenadi = deger

Şimdi alttaki kodları incelediğimizde ilk üç satırda DECLARE ile değişken tanımlaması, dördüncü satırda SET ile @departman değişkenine 'Bilişim' değerini atıyoruz. Beşinci satırda ise EXEC ile stored procedure'ü çalıştırıyoruz, paremetreleri de yanına sırayla yazıyoruz. Çıkış parametrelerinde OUTPUT kullanıldığına dikkat ediniz. 
 
DECLARE @minmaas DECIMAL(15,2)
DECLARE @maxmaas DECIMAL(15,2)
DECLARE @departman VARCHAR(50)
SET @departman='Bilişim'
EXEC sp_max_min_maas_bul @departman, @minmaas OUTPUT, @maxmaas OUTPUT 
SELECT @departman, @minmaas AS 'En Düşük', @maxmaas AS 'En Yüksek'




SQL Server Derslerine Aşağıdaki bağlantıdan ulaşabilirsiniz.
Tüm SQL Server Dersleri

KAYNAKLAR
https://docs.microsoft.com/en-us/sql/relational-databases/stored-procedures/specify-parameters?view=sql-server-2017

Oğuzhan TAŞ
Nisan, 2019
Mutlu kodlamalar

Bookmark and Share