Gönderen Konu: SQL ile Parametreli / Parametresiz Procedure Yazmak  (Okunma sayısı 51 defa)

onurgoker

  • Y
  • Acemi
  • *****
  • Toplam İleti: 66
  • Karma +0/-0
  • What you see is what you can not get!
    • Profili Görüntüle
  • Bölüm: Bilgisayar Mühendisliği
SQL ile Parametreli / Parametresiz Procedure Yazmak
« : 09 Aralık 2011, 17:21:23 »
SQL dilinde sıklıkla kullandığımız komutları, tekrar tekrar yazmaktan kurtulmak için procedure yazmamız gerekir. Procedureler de yine SQL diliyle yazdığım 2-3 satırlık kodlardan ibaret.

SQL veritabanı dili aracılığıyla stored procedure yazmak istersek, aşağıdaki gibi komutlar kullanmamız gerekecek.

Bir örnek vermek gerekirse, bir firmada bulunan çalışanların aylık adları ve aylık maaşlarının bulunduğu bir PERSONEL adlı tablomuz olsun elimizde.

AdıMaas
Ahmet Aksaç1500
Can Atak1200
Ayten Hızır2000

Normal durumlarda SQL ile maaşı 1500 liradan büyük olanları şu şekilde getirirdik;

Kod: [Seç]
SELECT name, maas FROM PERSONEL WHERE maas > '1500'

Bu sorguyu eğer sık kullanıyorsak, aşağıdaki gibi yalnızca tek bir sefer oluşturulacak procedure ile basitçe çalıştırabiliriz. Procedure oluşturmak için;

Kod: [Seç]
CREATE PROCEDURE procedure_name
AS
[
      SELECT name, maas FROM PERSONEL WHERE maas > '1500'
]
GO


Artık maaşı 1500 liradan yüksek olan personeli getirmek için sadece procedure çağırmamız yeterli olacak.

Kod: [Seç]
EXEC procedure_name

Yukarıda görmüş olduğunuz tek satırlık kod bize şu sonucu verecek:

Ayten Hızır2000

Eğerki parametreli procedure çağırmak istersek, bir değişken tanımlarız ve değişkenin türünü de belirtiriz (int, char..vs). Procedure kurulumunu da şu şekilde yapmamız gerekir:

Kod: [Seç]
CREATE PROCEDURE procedure_name
AS
@variable_name int(4)
[
      SELECT name, maas FROM PERSONEL WHERE maas > @variable_name
]
GO

Bu procedure için çalıştırırken;

Kod: [Seç]
EXEC procedure_name 1500

yazdığımız zaman, yine bize maaşı 1500 liradan fazla olan personeli, yani Ayten Hızır'ı getirecektir.
« Son Düzenleme: 09 Aralık 2011, 17:38:53 Gönderen: onurgoker »