Anda di halaman 1dari 50

PEMRO G R A M A N P L /S QL

NUR AZIS, S.K OM., M.KOM


MATERI
• CURSOR
TUJUAN
1. MENGETAHUI DAN MENGERTI CURSOR
2. MAMPU MENGIMPLEMENTASIKAN
CURSOR DALAM PEMROGRAMAN DI
ORACLE
PENGERTIAN
• CURSOR MERUPAKAN SUATU VARIABEL YANG DIGUNAKAN UNTUK MENAMPUNG HASIL QUERY YANG
TERDIRI ATAS LEBIH DARI SATU ROW ATAU RECORD.

• CURSOR DAPAT DIILUSTRASIKAN SEBAGAI PENAMPUNG SEKALIGUS POINTER ATAS HASIL EKSEKUSI
QUERY.

• PADA DASARNYA PERINTAH “SELECT ..” PADA PL/SQL MERUPAKAN SEBUAH CURSOR.
• TERDAPAT DUA MACAM CURSOR, YAITU: CURSOR IMPLISIT DAN CURSOR EKSPLISIT
CURSOR IMPLISIT
• MERUPAKAN PERINTAH SELECT STATEMENT DENGAN KLAUSA INTO YANG TERDAPAT DI DALAM BLOK
PL/SQL DAN HARUS MENGHASILKAN SATU BARIS RECORD.

• JIKA HASIL CURSOR IMPLISIT INI LEBIH DARI SATU BARIS ATAU TIDAK MENGHASILKAN SATU BARIS
PUN, MAKA ORACLE AKAN MENGELUARKAN PESAN KESALAHAN.

• KLAUSA INTO PADA CURSOR IMPLISIT DIPAKAI UNTUK MENUGASKAN NILAI HASIL PROSES SELECT KE
DALAM VARIABEL-VARIABEL YANG DIPILIH.
CONTOH :
PENJELASAN
• JIKA NILAI NIM SAMA DENGAN 30108001 MAKA HASIL PROSES SELECT MENGHASILKAN 1 BARIS
SEDANGKAN JIKA NIM_NYA DIGANTI DENGAN NILAI LAIN DIMANA NILAI TERSEBUT TIDAK AKAN
MENGHASILKAN SATU BARIS PUN, MAKA ORACLE AKAN MENGELUARKAN PESAN KESALAHAN.

• DEMIKIAN PULA JIKA KLAUSA WHERE PADA CURSOR DI ATAS DIHILANGKAN SEMENTARA DI DALAM
TABEL PROYEK TERDAPAT LEBIH DARI SATU BARIS, MAKA CURSOR TERSEBUT TIDAK DAPAT
MENAMPUNG SEMUA BARIS YANG DITERIMA.

• HAL INI AKAN MENIMBULKAN ERROR “EXACT FETCH RETURNS MORE THAN REQUESTED NUMBER OF
ROWS”.0020
CONTOH IMPLICIT CURSOR
HASILNYA
CONTOH 2
HASILNYA
CONTOH KE 3
HASILNYA
CURSOR EKSPLISIT

• TIDAK SEPERTI CURSOR IMPLISIT, CURSOR EKSPLISIT HARUS DIDEKLARASIKAN TERLEBIH DAHULU
SEBELUM DIGUNAKAN.

• TERDAPAT EMPAT TAHAPAN PENGGUNAAN CURSOR EKSPLISIT INI YAITU: DECLARE, OPEN, FETCH DAN
TERAKHIR ADALAH CLOSE.
STATEMENT DECLARE

CURSOR NAMA_CURSOR IS QUERY

• MERUPAKAN DEKLARASI NAMA CURSOR DAN DEFINISI STRUKTUR QUERY YANG AKAN DILAKUKAN DI
DALAMNYA.
CONTOH:

DECLARE
CURSOR CUR1 IS
SELECT NIM, NAMA, ALAMAT FROM MAHASISWA
STATEMENT OPEN

OPEN NAMA_CURSOR;

CONTOH:
OPEN CUR1;
STATEMENT FETCH

FETCH NAMA_CURSOR INTO <VARIABLE1,VARIABLE2,..>;


PENJELASANNYA

• FETCH MERUPAKAN PERINTAH UNTUK MENGAMBIL ISI CURSOR, DIMANA ISI DARI CURSOR TERSEBUT
ADALAH HASIL QUERY YANG TELAH DIDEKLARASIKAN PADA STATEMENT DEKLARASI CURSOR.

• DAN TIAP-TIAP FIELD HASIL QUERY TERSEBUT KEMUDIAN DITAMPUNG DALAM VARIABLE-VARIABLE YANG
TIPE DATANYA SESUAI DENGAN TIPE-TIPE KOLOM QUERY PADA STATEMEN DEKLARASI.

• FETCH INI DILAKUKAN UNTUK TIAP-TIAP BARIS.


CONTOH

• FETCH CUR1 INTO V_NIM, V_NAMA, V_ALAMAT;


STATEMENT CLOSE

CLOSE NAMA_CURSOR;

PENJELASANNYA :
SETELAH PEMROSESAN QUERY SELESAI, CURSOR HARUS DITUTUP DENGAN SATATEMEN CLOSE INI.
BERIKUT INI ADALAH ATRIBUT-ATRIBUT UNTUK MENDAPATKAN STATUS CURSOR
SETIAP ATRIBUT DALAM PENGGUNAANNYA HARUS DIDAHULUI DENGAN NAMA CURSOR.
CONTOH:
HASILNYA :
CURSOR FOR LOOP
• ADA SEBUAH CARA UNTUK MENGAMBIL ISI CURSOR SECARA OTOMATIS, YAITU DENGAN STRUKTUR PENGULANGAN
FOR LOOP.

• DISEBUT OTOMATIS KARENA :


 TIDAK PERLU PROSES PEMBUKAAN CURSOR ( OPEN )
 MEMANIPULASI PROSES PENGAMBILAN CURSOR ( FETCH )
 TIDAK PERLU PENUTUPAN CURSOR ( CLOSE )
 VARIABEL INDEKS YANG DIGUNAKAN DALAM STRUKTUR PENGULANGAN FOR_LOOP TIDAK PERLU
DIDEKLARASIKAN TERLEBIH DAHULU
SINTAKS:
DECLARE
CURSOR NAMA_CURSOR IS EKSPRESI-QUERY
BEGIN
FOR NAMA_RECORD IN NAMA_CURSOR LOOP
-- NAMA_RECORD TIDAK PERLU DIDEKLARASIKAN
END LOOP
END;
CONTOH:
HASIL
KET :

• NAMA RECORD YANG DIDEFINISIKAN SESUDAH FOR MERUPAKAN PENDEKLARASIAN YANG HANYA
INTERNAL DI DALAM LOOP, DAN RUANG LINGKUPNYA BERSIFAT INTERNAL SAMPAI LOOP BERHENTI.

• SEBENARNYA DI DALAM LOOP FOR, CURSOR TIDAK HARUS DIDEKLARASIKAN TERLEBIH DAHULU.
CONTOH MENGGUNAKAN LOOP-EXIT:
HASILNYA
CONTOH MENGGUNAKAN WHILE-LOOP
HASIL
CONTOH MENGGUNAKAN FOR-IN-LOOP
HASILNYA
CONTOH MENGGUNAKAN FOR-IN-LOOP TANPA MENDEKLARASIKAN
CURSOR
HASILNYA
LANJUT DENGAN TUGAS
TUGAS PENDAHULUAN :

1. JELASKAN PERBEDAAN ANTARA CURSOR DENGAN PERINTAH SELECT!


2. JELASKAN MAKSUD DAN KELUARAN DARI BLOK PL/SQL DIBAWAH INI:
TUGAS

1. BUAT DATABASE BARU DENGAN NAMA NPM ANDA.


BUAT TABEL-TABEL SEPERTI PADA ERD SEPERTI BERIKUT LENGKAP DENGAN TIPE DATA DAN PANJANG DATA YANG
BENAR.
KEMUDIAN ISIKAN DATA-DATA BERIKUT :
2. BUATLAH CURSOR IMPLISIT DAN EKSPLISIT YANG MENAMPILKAN DATA-DATA BUKU BESERTA
SUPPLIERNYA!
3. JALANKAN BLOK PL/SQL DIBAWAH INI PADA SQL PLUS KEMUDIAN JIKA TERJADI ERROR PERBAIKI :
PERINTAH 2

• TUGAS DIEMAIL PALING LAMBAT HARI SABTU TGL 16-NOV 2019


• DALAM BENTUK DOC DISERTAI HASIL DAN PENJELASAN BESERTA HASIL EXPORT TABEL YANG DIBUAT
CONTOH PERINTAH EXPORT
SEKIAN DAN TERIMA KASIH

Anda mungkin juga menyukai