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.
Şimdi verdiğimiz departmanID bilgisinden departman adını bulan bir stored procedure oluşturalım.
CREATE PROC procedere_adi
@degisken1 degiskentipi,
@degisken2 degiskentipi OUTPUT
AS BEGIN
...
...
...
...
END
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
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
Ş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
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.
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
Dil Değiştir(Change Language)
Kategoriler
- Csharp(58)
- Csharp Formlar(23)
- Web Tasarım(9)
- CSS(27)
- JavaScript(37)
- PHP(50)
- Laravel(3)
- ASP.net(38)
- Excel(15)
- Güvenlik(4)
- E-Ticaret(3)
- Kariyer(5)
- SQL Server(29)
- MySQL(16)
- Linux(17)
- MacOSX(8)
- Ayarlar(12)
- Bilgisayar Ağları(3)
- Symfony(1)
- Teknoloji(7)
- VBS(1)
- Arduino(6)
- RaspberryPi(1)
- Algoritmalar(15)
- HTML(3)
- Python(2)
- Bash Script(7)
- C Programlama(10)
- Flutter - Dart(11)
- Bootstrap(1)
En çok Okunan 18 Makale
- :: Excelde EĞER Fonksiyonu Kullanımı...
- :: Csharp ile Access Veritabanı Bağlan...
- :: SQL nedir, Temel SQL Komutları nele...
- :: Hangi Linux Dağıtımı?
- :: OSX İşletim Sistemine PHP, MySQL, A...
- :: PHP dilini kullanarak MySQLi tekniğ...
- :: Excel Hesap tablosunda EĞERSAY Fonk...
- :: Excel Hesap tablosunda ÇOKETOPLA Fo...
- :: Excel Hesap tablosunda ETOPLA Fonks...
- :: Excel Hesap tablosunda ÇOKEĞERSAY F...
- :: Hangi Programlama Dilini Öğrenmeliy...
- :: Mac Bilgisayarınıza Windows 7 Yükle...
- :: PHP ile Basit Dosya Yükleme
- :: C# Programlama Dili ile İlgili Örne...
- :: Excel hücrelerinde yıldız koyarak b...
- :: PHP Dili kullanarak MySQLi Tekniği ...
- :: PhpMyAdmin Şifresi Nasıl Değiştiril...
- :: Hangisi acaba, PHP mi ASP.NET mi ?