MSSQL ile Dinamik Sorgu Çalıştırmak

  • 20.01.2016
  • M.Tayyip Yetiş
  • MSSQL

mssqlHerkese merhaba, bu makalemde yine mssql ile çalışırken ihtiyaç duyacağımız bir kaç bilgiden bahsedeceğim. Öncelikle şunu söylemeliyim ki bilgisayarlar geliştikçe artık onları çalıştıran programları bile kendilerinin yapmasını sağlayabiliyoruz önceden öngüreleyemeyen durumlara karşı önlem almalarını sağlayabiliyor ya da kendi kendilerine yeni bir şeyler öğrenmelerini sağlayabiliyoruz elbette bunlar hollywood filmlerindeki kadar abartılı ve saçma bir şekilde değil aksine insanlık için faydalı ve mantıklı bir şekilde oluyor ve bu tür çalışmaların henüz emekleme seviyesinde olduğunu ve temel işlemler için yapıldığını söyleyebiliriz. Machine Learning denilen makine öğrenmesi kendi başına bir bilim dalı olmakla birlikte ilgilendiği konular gerçekten şaşırtıcı olabiliyor.

Yazılımsal olarak da örneğin .Net platformunda dinamik olarak bir dll ya da exe dosyası oluşturup bunları çalıştırabiliyor ya da kendi programınızda plug-in mantığında eklenti olarak kullanabiliyorsunuz bu şekilde esnek program yazabiliyorsunuz üstelik bu dosyalar fiziksel olmak zorunda da değil tüm işlemleri sadece RAM üzerinde yapabilirsiniz. Daha da ileriye gidebilirseniz kendi derleyicinizi bile yapabilirsiniz. bu ayrı bir makalenin konusu olduğu için vakti geldiğinde ayrı bir konu olarak işlemek daha doğru olacaktır.

Bu makalede ise Mssql üzerinde dinamik olarak bir sorgu oluşturup çalıştırmayı hatta dinamik sorgunuza parametre bile göndermeyi göstereceğim. Mssql ile sorgu çalıştırmanın üç yolu var.

  1. Standart olarak yazmak
  2. Exec metodunu kullanarak yazmak
  3. sp_executesql stored procedure’unu kullanarak yazmak

Şimdi bir urunler tablomuzun olduğunu varsayayalım içerisinde diğer gerekli sütunların yanında bir de kategori sütunu olsun. Standart yöntem ile aşağıdaki şekilde belli kategoriye göre ürünleri çekebilirsiniz

SELECT * FROM urunler WHERE kategori = ‘elektronik’

Bu en basit yoludur. 2. yöntem ile Exec metoduna string türünden sorgunuzu parametre olarak vererek çalıştırabilirsiniz

SET @sqlCommand = 'SELECT * FROM urunler WHERE kategori = ''elektronik'''
EXEC (@sqlCommand)

3. yöntem ile sorgunuzun içine parametre gönderebilirsiniz. declare ettiğiniz sql cümlenizin türü ntext/nchar/nvarchar türlerinden biri olmalıdır. aşağıdaki örneği inceleyin

DECLARE @sqlCommand nvarchar(MAX)
DECLARE @kategori nvarchar(75)
SET @sqlCommand = 'SELECT * FROM urunler WHERE kategori =@kategori'
EXECUTE sp_executesql @sqlCommand, N'@kategori nvarchar(75)', @kategori = 'elektronik'

Bu şekilde sorgu içerisinde kendi sorgunuzu üretip çalıştırabilirsiniz. umarım faydalı olmuştur.

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

Yorum Yap