COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
44/ 65

Veritabanı programlama

Dinamik SQL ve sp_executesql

Değerleri koddan ayır.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Dinamik SQL, sorgu yapısının çalışma anında değişmesidir. Kullanıcı değerini sorgu metnine birleştirmek yerine sp_executesql parametresi olarak ilet. Parametreler tablo veya sütun adı yerine geçmez; nesne adları için sabit bir izin listesi gerekir. QUOTENAME bir tanımlayıcıyı sınırlar, erişim yetkisi vermez.

Parametreli çağrı plan tekrar kullanımını kolaylaştırabilir; her sorgunun optimal planı yine veri dağılımına bağlıdır. N öneki Unicode metni korur. Metin boyutunu nvarchar(max), parametre tipini gerçek sütun tipiyle uyumlu seç. sp_executesql kullanmak tek başına güvenli sayılmaz: zararlı metni daha önce birleştirmişsen risk devam eder. İzin listesi dışındaki yapısal seçenekleri reddet.

NERESİNDE KULLANIRSIN?

Dinamik filtreler ve izinli sıralama seçenekleri için.

SIK YAPILAN HATA

Parametre yerine metin birleştirip sonunda sp_executesql çağırmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
EXEC sys.sp_executesql N'SELECT ProductId, ProductName FROM lab.Product;';

Sabit SQL metni yürütülür.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

Minimum fiyatı parametre olarak alan dinamik sorgu yaz.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
EXEC sys.sp_executesql N'SELECT ProductName, Price FROM lab.Product WHERE Price >= @Min;', N'@Min decimal(10,2)', @Min = 1000;

Fiyat filtre değeri metinden ayrı tutulur.