SQL Server saklı yordamları

Depolanan Prosedürler Yüksek Verimlilik ve Güvenlik Avantajları Sağlıyor

Microsoft SQL Server, Transact-SQL deyimlerini yönetilebilir bloklara gruplandırarak veritabanı geliştirme sürecini basitleştirmek için saklı yordam mekanizmasını sağlar. Depolanan yordamlar, elde ettikleri verimlilik ve güvenlik faydalarını zamanında belirleyen değerli SQL Server geliştiricileri tarafından takdir edilmektedir.

Saklı Prosedürlerin Kullanmanın Yararları

Bir geliştirici neden saklanmış prosedürleri kullanmalıdır?

İşte bu teknolojinin temel faydaları şunlardır:

Saklı yordamlar, kullanıcı tanımlı işlevlere benzer, ancak ince farklılıklar vardır.

yapı

Saklı yordamlar, diğer programlama dillerinde görülen yapılara benzer.

Verileri, yürütme süresinde belirtilen girdi parametreleri biçiminde kabul eder. Bu girdi parametreleri (uygulanıyorsa), bazı sonuçları üreten bir dizi ifadenin uygulanmasında kullanılır. Bu sonuç, bir kayıt kümesi, çıkış parametreleri ve bir dönüş kodu kullanılarak çağrı ortamına döndürülür.

Bu bir ağız dolusu gibi gelebilir, ancak saklı yordamların aslında oldukça basit olduğunu göreceksiniz.

Örnek

Bu sayfanın alt kısmında gösterilen envanter tablosuyla ilgili pratik bir örneğe bakalım. Bu bilgiler gerçek zamanlı olarak güncellenir ve depo yöneticileri sürekli olarak depolarında depolanan ve sevkiyat için mevcut olan ürün seviyelerini kontrol ederler. Geçmişte, her yönetici aşağıdakilere benzer sorguları çalıştırabilirdi:

SELECT Ürün, Miktar
Envanterden
WHERE Depo = 'FL'

Bu, SQL Server'da yetersiz performansla sonuçlandı. Bir depo yöneticisi her sorguyu çalıştırdığında, veritabanı sunucusu sorguyu yeniden derlemek ve sıfırdan yürütmek zorunda kaldı. Ayrıca, depo yöneticisinin SQL bilgisine ve tablo bilgilerine erişmek için uygun izinlere sahip olmasını da gerektirdi.

Bunun yerine, saklı bir prosedür kullanılarak işlem basitleştirilebilir. İşte bir depo için stok seviyelerini alan sp_GetInventory adında bir prosedürün kodu.

CREATE PROSEDÜRÜ sp_Get Envanteri
@location varchar (10)
GİBİ
SELECT Ürün, Miktar
Envanterden
WHERE Depo = @location

Florida depo yöneticisi daha sonra komutları vererek envanter seviyelerine erişebilir:

EXECUTE sp_GetInventory 'FL'

New York depo müdürü, o alanın envanterine erişmek için aynı saklı yordamı kullanabilir:

EXECUTE sp_GetInventory 'NY'

Verilmiş, bu basit bir örnektir, ancak soyutlamanın yararları burada görülebilir. Depo yöneticisinin SQL veya prosedürün iç işleyişini anlaması gerekmiyor. Performans açısından bakıldığında, saklı yordam harikalar yaratır. SQL Server bir kez bir yürütme planı oluşturur ve daha sonra yürütme zamanında uygun parametreleri takarak yeniden kullanır.

Artık saklı prosedürlerin faydalarını öğrendiniz, oraya çıkın ve bunları kullanın.

Birkaç örnek deneyin ve elde edilen performans iyileştirmelerini ölçün - şaşıracaksınız!

Envanter Tablosu

İD Ürün Depo miktar
142 Yeşil fasulye NY 100
214 bezelye FL 200
825 Mısır NY 140
512 Lima fasulyesi NY 180
491 Domates FL 80
379 Karpuz FL 85