Situs informasi aplokasi, Tips dan trik, Berita, informasi Teknologi, perkembangan Gadget dan internet.

Thursday, November 14, 2019

Tips Dan Trik Cursors Pada Pl/Sql

Apa Itu Cursor?

Pada agenda PL/SQL, kita tidak dapat menyimpan data hasil query yang lebih dari 1 record di variabel. Untuk menyimpan data yang lebih dari 1 record, maka gunakanlah Cursor. Karena cursor berperan sebagai penampung data dari hasil query.

Jenis Cursor

Ada 2 jenis cursor pada oracle PL/SQL, yaitu:

1. Implicit Cursor

Implicit Cursor yaitu cursor yang di deklarasikan dan dikelola secara otomatis oleh PL/SQL untuk semua operasi SELECT Statement dan DML (Data Manipulation Language). Implicit cursor akan menghasilkan 1 row/record.

Contoh:

SELECT employe_name INTO vName FROM Employee Where ROWNUM = '1'; 


2. Explicit Cursor

Explicit Cursor yaitu cursor yang didefiniskan pada bab deklarasi (DECLARE) dan biasanya memakai prosedur open, fetching, dan close cursor.

Tahapan Dalam Cursor

Ada beberapa tahapan atau proses dalam menciptakan cursor di Oracle PL/SQL, yaitu:

1. Deklarasi (DECLARE)
Tahapan ini dipakai untuk mendeklarasikan sebuah cursor. Sintaknya adalah:

CURSOR cursor_name IS SELECT ...; 

2. Open
Tahapan ini dipakai untuk membuka atau mengaktifkan sebuah cursor. Sintaknya adalah:

OPEN cursor_name; 

3. Fetching Data (Mengambil data)
Tahapan ini dipakai untuk mengambil data dari sebuah cursor dan ditampung dalam sebuah variabel yang telah ditentukan. Sintaknya yaitu :

FETCH cursor_name INTO variable_list; 

4. CLOSE (Menutup cursor).
Tahapan ini dipakai untuk menutup atau me-nonaktifkan sebuah cursor. Sintaknya yaitu :

CLOSE cursor_name; 

Atribut Pada Cursor

Di bawah ini yaitu atribut-atribut yang sering dipakai saat menciptakan sebuah cursor di PL/SQL. Biasanya dipakai pada implicit cursor.

Atribut Keterangan
SQL%ROWCOUNT Digunakan untuk menampilkan jumlah record yang dihasilkan dari SELECT, UPDATE, dan DELETE statement.
SQL%FOUND Bernilai TRUE jikalau cursor menghasilkan record/baris atau record berhasil di update atau di delete
SQL%NOTFOUND Kebalikan dari SQL%FOUND, yaitu bernilai TRUE jikalau cursor tidak menghasilkan record/baris
SQL%ISOPEN Bernilai true jikalau cursor masih aktif (open)


Contoh Implicit Cursor

Di bawah ini yaitu 2 teladan agenda penggunaan Implicit Cursor pada Oracle PL/SQL:

Contoh Program #1 - Select Statement

DECLARE     v_emp_name varchar2(100); BEGIN     SELECT first_name || ' ' ||  last_name     INTO emp_name    FROM employees   WHERE employee_id=100;      DBMS_OUTPUT.PUT_LINE(v_emp_name); end;  

Contoh Program #2 - Upadate Statement

DECLARE     v_number_rows number(5); BEGIN   UPDATE employee    SET salary = salary + 1000;   IF SQL%NOTFOUND THEN     DBMS_OUTPUT.PUT_LINE('Tidak ada record yang berhasil di update');   ELSIF SQL%FOUND THEN     v_number_rows := SQL%ROWCOUNT;     DBMS_OUTPUT.PUT_LINE('Ada ' || v_number_rows || ' record yang telah berhasil di update');   END IF;  END; 

Contoh Explicit Cursor


Di bawah ini yaitu teladan agenda PL/SQL memakai Explicit Cursor:

Contoh #1 - LOOP Cursor

DECLARE     data_pegawai employees%rowtype;     CURSOR c_pegawai IS SELECT * FROM employees; BEGIN     IF NOT c_pegawai%ISOPEN THEN     OPEN c_pegawai;     END IF;     LOOP          EXIT WHEN c_pegawai%NOTFOUND;         FETCH c_pegawai INTO data_pegawai;         DBMS_OUTPUT.PUT_LINE(data_pegawai.first_name || ' ' || data_pegawai.last_name);     END LOOP;     CLOSE c_pegawai; END;