Veritabanı programlama
Stored procedure ve parametreler
Tekrarlanabilir veri işlemlerine sınır çiz.
Kavramı anlayalım
Procedure, giriş parametreleri alıp bir veya birden çok işlem yapabilen veritabanı programıdır. SELECT sonucu, OUTPUT parametresi ve RETURN durum kodu farklı çıkış kanallarıdır. SET NOCOUNT ON etkilenen satır mesajlarını azaltır; sonuç kümesini kapatmaz.
İşlem bütünlüğü gerekiyorsa XACT_ABORT, TRY/CATCH ve transaction kapsamını tasarla. Çağıranın başlattığı transaction’a koşulsuz COMMIT veya ROLLBACK uygulamak sorun yaratabilir. Procedure otomatik olarak injection güvenliği sağlamaz: içeride metin birleştirilen dinamik SQL hâlâ risklidir. Parametre tipini sütunla uyumlu seç. Parametre sniffing bir hata adı değil, ilk değerlerin plan derlemesindeki etkisidir; ölçüm yapmadan RECOMPILE ekleme.
Uygulamanın parametreli rapor çağrılarını düzenlemek için.
RETURN ile bütün bir tablo dönebileceğini sanmak.
Aynı konu. Üç farklı derinlik.
DECLARE @CustomerId int = 1;
SELECT OrderId, OrderDate FROM lab.SalesOrder WHERE CustomerId = @CustomerId;Parametrenin sorgudaki kullanımını gösterir.
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.
Önce kendin dene.
GetCustomerOrders procedure’ünü ikinci müşteri için çağır.
Çözümü ve açıklamasını göster
EXEC lab.GetCustomerOrders @CustomerId = 2;Procedure’ü önce oluştur. 102 ve 108 numaralı siparişler döner.