Prosedur Tersimpan vs Fungsi
Prosedur dan fungsi tersimpan adalah dua jenis blok pemrograman. Keduanya harus memiliki nama panggilan. Nama panggilan tersebut digunakan untuk memanggilnya di dalam blok pemrograman lain seperti fungsi prosedur dan paket atau kueri SQL. Kedua tipe objek ini menerima parameter dan melakukan tugas di belakang objek tersebut. Ini adalah sintaks (di ORACLE) untuk membuat prosedur tersimpan, buat atau ganti nama prosedur prosedur (parameter)
sebagai
mulai
pernyataan;
pengecualian
pengecualian_penanganan
akhir;
Dan berikut adalah sintaks untuk membuat fungsi (di ORACLE), buat atau ganti nama fungsi_fungsi (parameter)
return return_datatype
sebagai
mulai
pernyataan;
return return_value/variabel;
pengecualian;
exception_handling;
akhir;
Prosedur Tersimpan
Seperti disebutkan di atas, prosedur tersimpan diberi nama blok pemrograman. Mereka menerima parameter sebagai input dan proses pengguna sesuai dengan logika di balik prosedur dan memberikan hasil (atau melakukan tindakan tertentu). Parameter ini dapat berupa tipe IN, OUT dan INOUT. Deklarasi variabel, penetapan variabel, pernyataan kontrol, loop, kueri SQL, dan panggilan fungsi/prosedur/paket lainnya dapat berada di dalam tubuh prosedur.
Fungsi
Fungsi juga diberi nama blok pemrograman, yang harus mengembalikan nilai menggunakan pernyataan RETURN, dan sebelum mengembalikan nilai, tubuhnya juga melakukan beberapa tindakan (sesuai dengan logika yang diberikan). Fungsi juga menerima parameter untuk dijalankan. Fungsi dapat dipanggil di dalam kueri. Ketika suatu fungsi dipanggil di dalam kueri SELECT, itu berlaku untuk setiap baris dari kumpulan hasil kueri SELECT. Ada beberapa kategori fungsi ORACLE. Mereka adalah,
Fungsi baris tunggal (mengembalikan satu hasil untuk setiap baris kueri)
Ada sub kategori dari satu baris fungsi.
- Fungsi numerik (Mis: ABS, SIN, COS)
- Fungsi karakter (Mis: CONCAT, INITCAP)
- Fungsi waktu tanggal (Mis: LAST_DAY, NEXT_DAY)
- Fungsi konversi (Mis: TO_CHAR, TO_DATE)
- Fungsi koleksi (Contoh: KARDINALITAS, SET)
- Fungsi agregat (Mengembalikan satu baris, berdasarkan sekelompok baris. Contoh: AVG, SUM, MAX)
- Fungsi analitik
- Fungsi referensi objek
- Fungsi model
- Fungsi yang ditentukan pengguna
Apa perbedaan antara fungsi dan Prosedur Tersimpan?
• Semua fungsi harus mengembalikan nilai menggunakan pernyataan RETURN. Prosedur tersimpan tidak mengembalikan nilai menggunakan pernyataan RETURN. Pernyataan RETURN di dalam prosedur akan mengembalikan kontrolnya ke program pemanggil. Parameter OUT dapat digunakan untuk mengembalikan nilai dari prosedur tersimpan.
• Fungsi dapat dipanggil di dalam kueri, tetapi prosedur tersimpan tidak dapat digunakan di dalam kueri.
• Tipe data RETURN harus disertakan untuk membuat fungsi, tetapi dalam prosedur tersimpan DDL, tidak.