SQL Server’ da Dinamik Sorgu Oluşturma

Sabit bir SQL Sorgusu yazdınız. Ancak tablo adınız veya kolon adlarınız duruma göre değişebilen bir sorgunuz olsun istiyorsunuz. Bunu yapabilmek için “Dinamik Sorgu” yazmanız gereklidir. Aşağıda yazılımına ilişkin örneği bulabilirsiniz;

DECLARE @TABLO NVARCHAR(100)
DECLARE @COLON NVARCHAR(100)
DECLARE @SORGU NVARCHAR(250)

SET @TABLO = ‘[dbo].[KisilerTablosu]’
SET @COLON = ‘[Isim],[Soyisim],[Adres]’
SET @SORGU = ‘SELECT ‘+@COLON + ‘ FROM ‘ + @TABLO

EXEC (@SORGU)

Yukarıda dinamik kullanıma ait basit bir örnek uygulama bulunuyor. Kullanmak istediğiniz durumuma bağlı olarak procedure, function gibi yapılarda da kullanabilirsiniz.

NOT: EXEC ifadesinden sonra çalıştırmak istediğiniz string’ i mutlaka parantez içerisinde yazmalısınız.

Kullanımı ve çalışma şeklide aşağıdaki gibidir ;

dinamik sorgu

Konuyla veya SQL Server ile ilgili her konuda soru sorabilirsiniz.

Bir sonraki yazıda görüşmek üzere.

 

 

Views All Time
Views All Time
Views Today
Views Today

Bunlar da hoşunuza gidebilir...

21 Cevaplar

  1. ozanyay dedi ki:

    Yazı için teşekkürler tabiki, fakat bir eleştirim olacak.

    Siz direkt Select kolon from tablo yazsanız zaten dinamik olmuş olacaktı sizin deyiminizle. Sorgudaki kolon ve tablo yerine istenilen tablo ile kolonun yazılması yeterli olacaktı. Yaptıklarınıza gerek yoktu. Adına dinamik sorgu dediğiniz şey maalesef verimli olmamış bana göre. Eleştirirken bir yanlışım olduysa kusuruma bakmayın. Başarılar dilerim.

    • Blogger Merve dedi ki:

      Yorumunuz için teşekkürler. Konuyla ilgili basit bir örnek yaptım sadece. Dinamik sorgu yazmaya ihtiyacınız olduğunda benim sabit olarak verdiğim değerlere siz farklı sorgulardan farklı değerler atayarak kullanabilirsiniz. kompleks bir örnek yapmak istemedim. nasıl durumlarda kullanacağınız artık sizin oluşturmak istediğiniz sorguya ve hayal gücünüze bağlı.
      İyi çalışmalar.

  2. utku dedi ki:

    Merhaba

    Ben plsql de dinamik sorgu yazmaya çalışıyorum şöyle bir yapim var.
    İlk sorguda tablonun kolonlarını çekiyorum tabi bazı type lerine göre (mesela sadece numericler gelsin) çektiğim kolon isimlerini yeni bir sorgu içinde kullanmaya çalışacağım.hem select içinde hemde where içinde bunun için nasıl bir yol izlemeliyim. Umarım anlatabilmişimdir.
    iyi günler

    • Blogger Merve dedi ki:

      Merhabalar, çektiğiniz kolon isimlerini nvarchar max bir değişkene aralarına virgül koyarak atayıp, sonrasında dinamik sorgunun kolon kısmına da bu değişkeni ekleyebilirsiniz. where içinde case komutu kullanılabilir. bu şekilde deneyin. farklı bir konu olursa yeniden yardımcı olmaya çalışırım.
      iyi günler.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir