Ana içeriğe geç
Kesit SQL
İleri · T-SQL (SQL Server)

Saklı yordamlar (stored procedure)

Parametreli, yeniden kullanılabilir ve güvenli iş mantığı.

Uygulamada aç, 3 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Neden saklı yordam?

CREATE OR ALTER PROCEDURE dbo.usp_MusteriSiparisleri
    @musteri_id INT,
    @yil INT = NULL          -- varsayılan değerli (isteğe bağlı) parametre
AS
BEGIN
    SET NOCOUNT ON;
    SELECT order_id, order_date, status, channel
    FROM orders
    WHERE customer_id = @musteri_id
      AND (@yil IS NULL OR YEAR(order_date) = @yil)
    ORDER BY order_date;
END;
GO

EXEC dbo.usp_MusteriSiparisleri @musteri_id = 7, @yil = 2024;

OUTPUT parametreleri

CREATE OR ALTER PROCEDURE dbo.usp_KategoriOzet
    @kategori NVARCHAR(50),
    @adet INT OUTPUT,
    @ortalama DECIMAL(12, 2) OUTPUT
AS
BEGIN
    SELECT @adet = COUNT(*), @ortalama = AVG(price)
    FROM products
    WHERE category = @kategori;
END;
GO

DECLARE @a INT, @o DECIMAL(12, 2);
EXEC dbo.usp_KategoriOzet @kategori = N'Kitap', @adet = @a OUTPUT, @ortalama = @o OUTPUT;
SELECT @a AS urun_sayisi, @o AS ortalama_fiyat;

RETURN ile durum kodu

CREATE OR ALTER PROCEDURE dbo.usp_StokDus @urun INT, @adet INT
AS
BEGIN
    IF (SELECT stock FROM products WHERE product_id = @urun) < @adet
        RETURN 1;   -- yetersiz stok
    UPDATE products SET stock = stock - @adet WHERE product_id = @urun;
    RETURN 0;
END;
GO

DECLARE @sonuc INT;
EXEC @sonuc = dbo.usp_StokDus @urun = 39, @adet = 1;
SELECT @sonuc AS durum_kodu;
AdlandırmaYordamlarda usp_ (user stored procedure) öneki yaygındır. sp_ önekinden kaçın: SQL Server bu öneki önce master veritabanında arar.
Alıştırmalara geç (3)