OVERLOAD != 'Kelebihan beban'
Jika sebelumnya udah dijelasin secara singkat tentang PACKAGE != (artinya : tidak sama dengan) 'bungkus', maka kali ini aku akan menjelaskan tentang OVERLOAD yang juga != (tidak sama dengan) 'kelebihan beban'. Ya, selain PACKAGE, dalam perintah blok PL/SQL dikenal juga istilah OVERLOAD, yang berarti bagian dari package untuk pembuatan procedure dan function dengan nama yang sama tetapi parameter yang berbeda.
Ciri-ciri overload, diantaranya :
1. memiliki jumlah parameter yang dimiliki berbeda, maksudnya jika dalam sebuah package overload terdapat 2 perintah prosedure menggunakan nama prosedure yang sama berarti di harus memiliki jumlah parameter yang berbeda antara yang satu dan yang lain.
Contoh :
--Overload Specification :
CREATE OR REPLACE PACKAGE coba1
IS
PROCEDURE tulis(x number);
PROCEDURE tulis(x number, y number);
END coba1;
/
--Overload Body:
CREATE OR REPLACE PACKAGE BODY coba1
IS
PROCEDURE tulis(x number)
IS
BEGIN
dbms_output.put_line(x);
END;
PROCEDURE tulis(x number, y number)
IS
BEGIN
dbms_output.put_line(x||' , '||y);
END;
END coba1;
/
IS
PROCEDURE tulis(x number);
PROCEDURE tulis(x number, y number);
END coba1;
/
--Overload Body:
CREATE OR REPLACE PACKAGE BODY coba1
IS
PROCEDURE tulis(x number)
IS
BEGIN
dbms_output.put_line(x);
END;
PROCEDURE tulis(x number, y number)
IS
BEGIN
dbms_output.put_line(x||' , '||y);
END;
END coba1;
/
--Eksekusi Coba1:
begin
coba1.tulis(1);
coba1.tulis(1,2);
end;
/
coba1.tulis(1);
coba1.tulis(1,2);
end;
/
2. memiliki tipe data parameter berbeda, maksudnya adalah jika sebuah package overload memiliki 2 perintah prosedure menggunakan nama prosedure yang sama dengan jumlah parameter yang sama, namun tipe datanya berbeda yang satu dan yang lain.
Contoh :
--Overload Specification :
CREATE OR REPLACE PACKAGE coba2
IS
PROCEDURE tulis(x number);
PROCEDURE tulis(x varchar);
END coba2;
/
--Overload Body :
CREATE OR REPLACE PACKAGE BODY coba2
IS
PROCEDURE tulis(x number)
IS
BEGIN
dbms_output.put_line(x);
END;
PROCEDURE tulis(x varchar)
IS
BEGIN
dbms_output.put_line(x);
END;
END coba2;
/
CREATE OR REPLACE PACKAGE coba2
IS
PROCEDURE tulis(x number);
PROCEDURE tulis(x varchar);
END coba2;
/
--Overload Body :
CREATE OR REPLACE PACKAGE BODY coba2
IS
PROCEDURE tulis(x number)
IS
BEGIN
dbms_output.put_line(x);
END;
PROCEDURE tulis(x varchar)
IS
BEGIN
dbms_output.put_line(x);
END;
END coba2;
/
--Eksekusi Coba2 :
begin
coba2.tulis(1);
coba2.tulis('Satu');
end;
/
begin
coba2.tulis(1);
coba2.tulis('Satu');
end;
/
3. memiliki gabungan dari ciri 1 dan 2, maksudnya package overload tersebut memiliki jumlah parameter yang berbeda dan tipe data yang berbeda pula.
Contoh :
--Overload Specification :
CREATE OR REPLACE PACKAGE coba3
IS
PROCEDURE tulis(x number);
PROCEDURE tulis(x varchar, y varchar);
END coba3;
/
--Overload Body :
CREATE OR REPLACE PACKAGE BODY coba3
IS
PROCEDURE tulis(x number)
IS
BEGIN
dbms_output.put_line(x);
END;
PROCEDURE tulis(x varchar, y varchar)
IS
BEGIN
dbms_output.put_line(x||' '||y);
END;
END coba3;
/
--Eksekusi Coba3:
begin
coba3.tulis(1);
coba3.tulis('Satu','- Satu');
end;
/
CREATE OR REPLACE PACKAGE coba3
IS
PROCEDURE tulis(x number);
PROCEDURE tulis(x varchar, y varchar);
END coba3;
/
--Overload Body :
CREATE OR REPLACE PACKAGE BODY coba3
IS
PROCEDURE tulis(x number)
IS
BEGIN
dbms_output.put_line(x);
END;
PROCEDURE tulis(x varchar, y varchar)
IS
BEGIN
dbms_output.put_line(x||' '||y);
END;
END coba3;
/
--Eksekusi Coba3:
begin
coba3.tulis(1);
coba3.tulis('Satu','- Satu');
end;
/
Terimakasih penjelasannya.. sangat bermanfaat.. :)
BalasHapusbagus sekali penjelasanya, terima kasih :*
BalasHapusTerimakasih kak
BalasHapus