SQL Procedure ile Dinamik TOPN Sorgusu

Bu yazımızda TOPN komutunun Procudureler aracılıgıyla ile parametrik olarak uygulanmasını işleyeceğiz.

Öncelikle kısaca bir sorgu üzerinde TopN komutu nedir ondan bahsedelim.

SELECT TOP 10 * FROM MUSTERILER
Kullanım şekli böyle olan TOP komutu bize ilk 10 kaydı getirir. TOP 100 yazsaydık ilk 100 kaydı getirirdi.
Peki nerede işimize yarar; ilk aklıma gelen sitemize üye olan ilk 10 kişi kimdir? gibi sorulara cevap verir. Sadece 10 kayıt için bütün kayıtları çekmek çok mantıklı olmayacaktır.

İlk 10 (100) kayıt dedik ama bu herhangi bir ordery by komutu kullanılmazsa ASCyani artan sıralama ile çalışır. Bu durumda ilk N kaydı, order by DESC kullanılırsason N kaydı getirir.

Bu kadar bilgiden sonra asıl konumuz olan TOPN komutunu parametrik olarak nasıl alınır sorusunu cevaplayalım.

Önce Proceduremizi yazalım:

CREATE PROC TOPN
@ROWCOUNT NVARCHAR(10),
@SORTING NVARCHAR(10)
AS
DECLARE @KOMUT NVARCHAR(MAX)
SET @KOMUT=‘SELECT TOP ‘+ @ROWCOUNT +‘ * FROM MUSTERI ORDER BY ID ‘+ @SORTING

EXEC (@KOMUT)

Bu kadar olan Procuderemiz iki tane parametre alır.
Birincisi TOP için getirmek istediğiniz kayıt sayısı diğeri ise sıralama yönüdür (ASCveya DESC)

Önceden de bahsettiğim gibi asc kullanırsanız ilk girilen kayıtları desc kullanırsanız son girilen kayıtları getirir.
Query Analyzer da test etmek için
EXEC TOPN 5,‘ASC’

Paylaş:

“SQL Procedure ile Dinamik TOPN Sorgusu” üzerine bir yorum

Yorum yapın