PL/SQL - Fungsi: Panduan untuk Pemula

Hai sana, para pemrogram yang sedang belajar! Hari ini, kita akan memulai perjalanan menarik ke dunia fungsi PL/SQL. Jangan khawatir jika Anda belum pernah menulis baris kode sebelumnya - saya akan menjadi panduan yang ramah, dan kita akan mengambil langkah demi langkah. Pada akhir tutorial ini, Anda akan dapat membuat dan memanggil fungsi seperti seorang ahli!

PL/SQL - Functions

Apa Itu Fungsi PL/SQL?

Sebelum kita mendalam, mari kita memahami apa itu fungsi. Bayangkan fungsi sebagai seorang asisten kecil dalam kode Anda. Itu seperti mini-program dalam program utama Anda yang melakukan tugas tertentu. Anda memberikan informasi kepadanya (kita sebut ini sebagai input atau parameter), dia melakukan pekerjaan, dan kemudian memberikan Anda hasil.

Misalnya, bayangkan Anda memiliki asisten robot ( mari kita sebutnya FunctionBot) yang dapat menghitung luas lingkaran. Anda memberitahu FunctionBot jari-jari lingkaran, dan dia cepat melakukan perhitungan dan memberitahu Anda luasnya. Itu sebasar apa yang fungsi lakukan dalam pemrograman!

Membuat Fungsi

Sekarang, mari kita belajar bagaimana membuat fungsi sendiri dalam PL/SQL. Struktur dasarnya tampak seperti ini:

CREATE [OR REPLACE] FUNCTION function_name
[(parameter_name [IN | OUT | IN OUT] type [, ...])]
RETURN return_datatype
IS
-- Bagian deklarasi
BEGIN
-- Bagian eksekusi
RETURN (value);
END;
/

Jangan khawatir! Mari kitauraikan ini:

  1. CREATE [OR REPLACE] FUNCTION: Ini memberitahu Oracle kita ingin membuat fungsi baru (atau mengganti yang sudah ada).
  2. function_name: Ini adalah nama yang kita berikan kepada fungsi kami.
  3. (parameter_name [IN | OUT | IN OUT] type [, ...]): Ini adalah input yang diterima fungsi kami.
  4. RETURN return_datatype: Ini menentukan jenis data yang akan dikembalikan oleh fungsi.
  5. IS: Kata kunci ini memisahkan header fungsi dari tubuhnya.
  6. Kata kunci BEGIN dan END membungkus kode utama fungsi kami.
  7. RETURN (value): Ini adalah tempat kita menentukan apa yang harus dikembalikan oleh fungsi.

Mari kita buat fungsi sederhana yang menghitung luas lingkaran:

CREATE OR REPLACE FUNCTION calculate_circle_area(radius NUMBER)
RETURN NUMBER
IS
pi CONSTANT NUMBER := 3.14159265359;
area NUMBER;
BEGIN
area := pi * radius * radius;
RETURN area;
END;
/

Berikut apa yang terjadi dalam fungsi ini:

  1. Kita membuat fungsi bernama calculate_circle_area.
  2. Itu menerima satu parameter input: radius, yang adalah NUMBER.
  3. Itu akan mengembalikan NUMBER (luas lingkaran).
  4. Kita mendefinisikan konstanta pi dengan nilainya.
  5. Kita menghitung luas menggunakan rumus: π * r^2.
  6. Akhirnya, kita mengembalikan luas yang dihitung.

Memanggil Fungsi

Sekarang kita sudah membuat fungsi, bagaimana kita menggunakannya? Ini disebut "memanggil" fungsi. Dalam PL/SQL, Anda dapat memanggil fungsi dengan beberapa cara:

1. Dalam pernyataan SELECT:

SELECT calculate_circle_area(5) AS circle_area FROM DUAL;

Ini akan mengembalikan luas lingkaran dengan jari-jari 5.

2. Dalam blok PL/SQL:

DECLARE
result NUMBER;
BEGIN
result := calculate_circle_area(7);
DBMS_OUTPUT.PUT_LINE('Luas lingkaran adalah: ' || result);
END;
/

Ini akan menghitung luas lingkaran dengan jari-jari 7 dan mencetak hasilnya.

3. Sebagai bagian dari ekspresi yang lebih besar:

DECLARE
radius NUMBER := 10;
diameter NUMBER;
BEGIN
diameter := 2 * radius;
DBMS_OUTPUT.PUT_LINE('Luas lingkaran dengan diameter ' ||
diameter || ' adalah: ' ||
calculate_circle_area(radius));
END;
/

Ini menghitung diameter dan kemudian menggunakan fungsi kita untuk menemukan luas.

Fungsi Rekursif PL/SQL

Sekarang, mari kita bicarakan sesuatu yang lebih tingkat lanjut: fungsi rekursif. Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Itu seperti boneka Rusia - buka salah satu, dan ada yang lain di dalamnya!

Berikut adalah contoh klasik: menghitung faktorial sebuah bilangan. Faktorial 5 (ditulis sebagai 5!) adalah 5 4 3 2 1 = 120.

Mari kita tulis fungsi rekursif untuk menghitung faktorial:

CREATE OR REPLACE FUNCTION factorial(n NUMBER)
RETURN NUMBER
IS
BEGIN
IF n = 0 OR n = 1 THEN
RETURN 1;
ELSE
RETURN n * factorial(n - 1);
END IF;
END;
/

Berikut penjelasannya:

  1. Jika n sama dengan 0 atau 1, kita kembalikan 1 (ini adalah kasus dasar).
  2. Jika tidak, kita kalikan n dengan faktorial (n-1).
  3. Fungsi ini terus memanggil dirinya sendiri dengan bilangan yang lebih kecil sampai mencapai kasus dasar.

Untuk menggunakan fungsi ini:

BEGIN
DBMS_OUTPUT.PUT_LINE('Faktorial 5 adalah: ' || factorial(5));
END;
/

Ini akan mencetak: "Faktorial 5 adalah: 120"

Metode Umum Fungsi PL/SQL

Berikut adalah tabel dari beberapa metode umum yang digunakan dengan fungsi PL/SQL:

Metode Deskripsi Contoh
CREATE FUNCTION Membuat fungsi baru CREATE FUNCTION my_func...
REPLACE FUNCTION Mengganti fungsi yang sudah ada CREATE OR REPLACE FUNCTION my_func...
RETURN Menentukan jenis kembalian dan nilai RETURN NUMBER; ... RETURN result;
CALL Memanggil fungsi SELECT my_func(5) FROM DUAL;
DROP FUNCTION Menghapus fungsi DROP FUNCTION my_func;
EXECUTE Mengeksekusi fungsi EXECUTE my_func(10);

Ingat, latihan membuat sempurna! Jangan takut untuk mencoba perubahan input, mengkombinasikan fungsi, atau membuat fungsi unik Anda sendiri. Semakin Anda bermain dengannya, semakin Anda akan memahami bagaimana cara kerjanya.

Dan itu saja! Anda sudah mengambil langkah pertama ke dunia fungsi PL/SQL. Dari membuat kalkulator sederhana hingga penyelesaian masalah rekursif, fungsi adalah alat yang kuat yang akan membuat kode Anda lebih efisien dan mudah dikelola. Terus jelajahi, terus kode, dan terutama, bersenang-senang!

Credits: Image by storyset