Mata Kuliah : Pemrograman Basis Data II
Dosen : Titik Lusiani, M.Kom, OCA
1.
Package
Package adalah suatu kumpulan subprogram seperti PROCEDURE
dan FUNCTION.
Package terdiri dari 2 bagian:
a)
Pacakage
Specification
b)
Package
Body
Contoh penulisan package
adalah sbb:
a.
Syntax Package Spesification:
CREATE [OR REPLACE] PACKAGE package_name IS|AS
public type and variable declarations
subprogram specifications
END [package_name];
public type and variable declarations
subprogram specifications
END [package_name];
b.
Syntax Package Body :
CREATE [OR REPLACE] PACKAGE BODY package_name IS|AS
private type and variable declarations
subprogram bodies
[BEGIN initialization statements]
END [package_name];
private type and variable declarations
subprogram bodies
[BEGIN initialization statements]
END [package_name];
c.
Contoh Package Parent:
CREATE or REPLACE PACKAGE pkg_emp is
PROCEDURE view_emp_sal(emp_id
employees.employee_id%type, gaji
out employees.salary%type);
FUNCTION view_emp_sal1(emp_id
employees.employee_id%type)
RETURN NUMBER;
END;
END;
2. Procedure
Procedure
adalah suatu blok PL/SQL yang menyimpan sekumpulan perintah yang tidak disertai
dengan pengembalian nilai. Dengan kata lain, procedure hanya melakukan proses
tertentu saja.
Procedure
Ditandai dengan adanya katakunci CREATE
PROCEDURE di ikuti oleh nama prosedur dan parameternya.Opsi lain ialah dengan
mengikuti CREATE dengan OR REPLACE. Dengan begitu jika telah ada procedure yang
sama sebelumnya maka akan di gantikan dengan procedure yang baru dan prosedure
yang lama akan hilang.
Syntax untuk membuat procedure
CREATE
[OR REPLACE] PROCEDURE nama_procedure
(parameter_1
tipedata, parameter_2 tipedata, …) IS
variabel-variabel_lokal
BEGIN
Statemen;
……
END;
Contoh Menghapus Procedure adalah sbb:
Ket : Perintah DROP Procedure
digunakan untuk menghapus procedure diikuti dengan nama procedure yang ingin dihapus.
3.
Parameter
Ada
sejumlah parameter, diantaranya ialah IN, OUT dan INOUT
a)
IN parameter Merupakan Tipe parameter yang didefinisikan
pada aktual parameter untuk kemudian di tangkap oleh formal parameter.
Parameter IN diggunakan untuk memasukkan
nilai, di definisikan secara default oleh
oracle
CREATE OR
REPLACE PROCEDURE luaslingkaran1 (r IN NUMBER) IS
phi NUMBER:=3.14;
luas NUMBER;
BEGIN
luas := phi*r*r;
DBMS_OUTPUT.PUT_LINE(‘Luas
lingkaran dengan jari-jari ‘||r||’ = ‘||luas);
END;
b)
OUT Parameter.
Merupakan tipe parameter pada procedure yang nilainya dapat digunakan oleh si
pemanggil procedure dan bisa di bilang OUT parameter merupakan kebalikan dari IN parameter
CREATE
OR REPLACE PROCEDURE luaslingkaran2 (r IN NUMBER, luas OUT NUMBER) IS
phi
NUMBER:=3.14;
BEGIN
luas
:= phi*r*r;
DBMS_OUTPUT.PUT_LINE(‘Luas
lingkaran dengan jari-jari ‘||r||’ = ‘||luas);
END;
c)
IN OUT Parameter.
Merupakan tipe parameter yang digunakan untuk mengirimkan sebuah nilai ke
procedure yang kemudian akan di proses dan di kembalikan kepada si pemanggil
procedure
4. FUNCTION
Function merupakan sebuah blok PL/SQL yang dapat mengembalikan sebuah
nilai. Function juga dapat disimpan dalam sebuah schema object, sehingga dapat
digunakan secara berulang-ulang.
Berikut
Perbedaan Procedure dengan Function:
Tabel 1 perbedaan procedure dan function
|
CREATE
[OR REPLACE] FUNCTION function_name
[(parameter1 [mode1] datatype1, …)]
RETURN datatype IS|AS
[local_variable_declarations; …]
BEGIN
– actions;
RETURN expression;
END [function_name];
5.
CURSOR
Cursor
merupakan suatu variabel yang digunakan untuk menampung hasil query yang
terdiri atas lebih dari satu row atau record.
Cursor sendiri
terdiri dari 2 tipe :
a.
Implicit
Cursor
Merupakan Cursor
yang dideklarasikan dan dikelola secara otomatis oleh PL/SQL untuk semua
operasi DML SQL dan PL/SQL SELECT Statement
b.
Eksplicit Cursor
Merupakan Cursor
yang dikelola dan dideklarasikan oleh Programmer
Contoh:
DECLARE
CURSOR csr_ac IS
SELECT employee_id, salary FROM
employees
WHERE first_name LIKE '%Alana%';
xempno employees.first_name%type;
xsal employees.salary%type;
BEGIN
OPEN csr_ac;
LOOP
FETCH csr_ac INTO xempno, xsal;
EXIT WHEN csr_ac%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(xempno || ' ' ||xsal);
END LOOP ;
CLOSE csr_ac;
END;
Penjelasan Perintah Cursor :
- Cursor bernama csr_ac yang memilih dari employee_id dan salary dari tabel employees dimana yang dipilih dari nama Alana.
- Deklarasi xempno dan xsal untuk first_name dan salary.
- Kemudian membuka cursor csr_ac yang telah dibuat dan kemudian mengambil nilai cursor csr_ac dalam variable xempno dan xsal dan akan ditutup apabila nilainya kosong.
- Kemudian ditampilkan sesuai variable xempno dan xsal, dan selesai perulangannya. Kemudian ditutup cursor csr_ac dan selesai.