# Stored Procedure (Saklı Yordam)

Adres: https://softwaredictionary.org/tr/terimler/stored-procedure
Kategori: Veritabanları
Son güncelleme: 2026-09-30
Türkçe karşılığı: saklı prosedür
Okunuşu: stord prısicır

Kısaca: Stored procedure, veritabanında saklanan adlandırılmış bir SQL ifadeleri kümesidir; uygulamalar her sorguyu göndermek yerine onu tek çağrıyla çalıştırabilir.

## Stored procedure nedir?

Stored procedure, veritabanının içinde yaşayan, yeniden kullanılabilir bir programdır. Bir ya da daha fazla SQL ifadesini, çoğu zaman değişkenler, koşullar ve döngülerle birlikte bir ad altında toplar; girdi parametreleri alabilir ve sonuç döndürebilir. Uygulamalar onu veritabanına göre `CALL` ya da `EXEC` gibi tek bir komutla çalıştırır.

Bir procedure oluşturduğunuzda veritabanı kodunu saklar ve birçok sistemde onun için hazırlanmış bir yürütme planını yeniden kullanabilir. Mantık verinin yanında çalıştığı için procedure, stoğu kontrol etmek, sipariş oluşturmak ve envanteri güncellemek gibi birkaç ilişkili adımı tek bir ağ gidiş-dönüşünde gerçekleştirebilir. Her veritabanının bunun için kendi prosedürel dili vardır; PostgreSQL'de PL/pgSQL ya da SQL Server'da T-SQL gibi.

Stored procedure'ü telefondaki bir hızlı arama tuşu gibi düşünün: her seferinde tüm rakamları çevirmek yerine, kayıtlı bir diziyi çalıştıran tek bir tuşa basarsınız. Stored procedure'ler bankacılıkta, raporlamada ve iş kurallarının veriye dokunan her uygulama için tek bir yerde uygulanmasını isteyen büyük kurumsal sistemlerde yaygındır. Güvenliği de artırabilirler; çünkü kullanıcıların alttaki tablolara doğrudan erişimi olmadan bir procedure çalıştırmasına izin verilebilir.

Stored procedure'ler çoğu zaman fonksiyonlar ve trigger'larla karıştırılır. Bir veritabanı fonksiyonu genellikle bir değer döndürür ve bir `SELECT` gibi sorgunun içinde kullanılabilir; procedure ise tek başına çağrılır ve birçok veritabanında transaction'ları yönetebilir. Trigger, bir `INSERT` gibi bir olaya karşılık otomatik olarak çalışır; procedure ise yalnızca bir şey onu çağırdığında çalışır. Başlıca ödünleşim, veritabanındaki mantığın sürümlenmesinin, test edilmesinin ve başka bir veritabanına taşınmasının uygulama kodundaki mantığa göre daha zor olmasıdır.

## Önemli noktalar

- Stored procedure, veritabanında saklanan, adlandırılmış ve yeniden kullanılabilir SQL kodudur.
- Parametre alabilir ve tek bir ağ gidiş-dönüşünde birçok ifade çalıştırabilir.
- Her veritabanı kendi prosedürel dilini kullanır; bu yüzden procedure'ler nadiren taşınabilirdir.
- Procedure'ler, kullanıcıların tablolara doğrudan dokunmadan çalıştırmasına izin vererek erişimi sınırlayabilir.
- Trigger'dan farklı olarak procedure yalnızca açıkça çağrıldığında çalışır.

## Örnek: PostgreSQL'de stored procedure oluşturmak ve çağırmak

```sql
-- Define a procedure that moves money between two accounts
CREATE PROCEDURE transfer(from_id INT, to_id INT, amount NUMERIC)
LANGUAGE plpgsql
AS $$
BEGIN
  UPDATE accounts SET balance = balance - amount WHERE id = from_id;
  UPDATE accounts SET balance = balance + amount WHERE id = to_id;
END;
$$;

-- Run it with one call
CALL transfer(1, 2, 100);
```

## Sık sorulan sorular

**Stored procedure ile fonksiyon arasındaki fark nedir?**

Fonksiyon bir değer döndürür ve bir SQL sorgusunun içinde kullanılabilir; stored procedure ise `CALL` gibi bir ifadeyle tek başına çağrılır. Birçok veritabanında procedure'ler ayrıca transaction'ı onaylayabilir ya da geri alabilir; fonksiyonlar genellikle bunu yapamaz.

**Stored procedure'ler hâlâ kullanılıyor mu?**

Evet, özellikle performansın ve merkezi kuralların önemli olduğu veri ağırlıklı ve kurumsal sistemlerde. Birçok yeni uygulama ise iş mantığının çoğunu uygulama kodunda tutar; çünkü test etmek, sürümlemek ve dağıtmak daha kolaydır.

**Stored procedure'ler SQL injection'ı önler mi?**

Kullanıcı girdisi parametre olarak geçirildiğinde yardımcı olurlar; çünkü girdi SQL kodu olarak değil değer olarak ele alınır. Ancak dizeleri birleştirerek dinamik SQL oluşturan bir procedure yine de savunmasız olabilir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
