Neden saklı yordam?
- Yeniden kullanım: Aynı mantık uygulamadan, raporlardan ve zamanlanmış işlerden çağrılır.
- Güvenlik: Kullanıcıya tabloya değil yalnızca yordama yetki verilebilir; parametreler SQL injection'ı önler.
- Performans: Yürütme planı önbelleğe alınır.
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.