Procedure ve function programlama dillerinde önemli bir konudur. Hemen hemen pek bir farkı yoktur. Tek ve önemli farkı function bir geri dönüş değeri verir ve direk değişken gibi kullanılabilir. Procedure'de out parameter destekleniyorsa alınır ama bir değişkene atamak gerekir. Bir örnekle göstermek gerekirse;
int i = toplam(5, 3); // function
toplam(5, 3, i); // procedure
Aslında her satırda tek bir işlem yapılacaksa pek farkı yok. Ama procedure'de out(çıkış) parametresi verdiğinden emin olmak lazım. Keza kavram olarak java'da direk olarak out parametresi yoktur. İkinci örnek primitive (ilkel) tipler için java'da desteklenmez. Her hemen her zaman birincisini kullanmak lazım.
Şimdi özellikle plsql'de ne işimize yarar onu anlayalım. Melesa bir sorgu yazacaksınız ve o sorgunun içinde bir işlem yaptırmanız lazım, örneğin büyük karakterleri büyük harfe çevirme olsun. Fonksiyon ve procedure ile farklı şekillerde yazmayı deneyelim
select buyukHarf(adı) from uyeler
Burada buyukHarf bizim bir fonksiyonumuz her bir üye için tek tek çalışacaktır ve fonksiyon değişken gibi kullanıldığı ve değeri verdiği için direk sonucu göreceğiz.
Aynı durum procedure için nasıl çalışır? Kısaca çalışmaz. Denemek için
select buyukHarf(adı, sonuç) from uyeler
Diye bir select yazıp, buyukHarf adında bir procedure oluşturabilirsin. Çalıştır dediğin zaman direk hata verecektir.
Programlama dili içinden örnek yapalım. Mesela sonuc = a*b + ( a^4) işlemini yazmak istiyorsunuz
sonuc = a*b + (power(a, 4)) // şeklinde power fonksiyonu ile kullanabilirsiniz.
Procedure ile yazmak istersek
int ust;
power(a, 4, ust);
sonuc = a*b + ust;
Bu şekilde bir kod yazmamız gerekir.
Herhalde açık olmuştur sanıyorum...