• Membuat Cursor Pada Oracle


          Cursor digunakan dalam script PL/SQL untuk menampilkan data yang tersimpan di dalam database. Ada dua macam cursor yaitu implicit cursor(kursor implisit) dan explicit cursor (kursor eksplisit). Implicit cursoradalah cursor yang tidak perlu dideklarasikan pada bagian declaration, sedangkan explicit cursor harus dideklarasikan di bagian declaration.  
    Berikut ini adalah template untuk implicit cursor: 
    select [daftar kolom]
    into [daftar variabel]
    from [daftar tabel]
    where [syarat]
    contoh:

    select first_name, last_name, salary
    into nama_depan, nama_belakang, gaji
    from employees
    where first_name = ‘Susan’;
    Berikut ini adalah contoh script PL/SQL yang menggunakan implicit cursor:

    declare
    nama_cari employees.first_name%type;
    nama_depan employees.first_name%type;
    alamat_email employees.email%type;
    telepon employees.phone_number%type;
    begin
    nama_cari := '&masukkan_nama';
    select first_name, email, phone_number
    into nama_depan, alamat_email, telepon
    from employees
    where first_name = nama_cari;
    dbms_output.put_line('Nama: '||nama_depan);
    dbms_output.put_line('Email:'||alamat_email||'@SemogaJaya.co.id');
    dbms_output.put_line('Telepon: '||telepon);
    end;
    /
    Jika script di atas dieksekusi pada schema HR maka hasilnya adalah sebagai berikut:


    sedangkan ini adalah template untuk explicit cursor:
    declare
    cursor [nama_cursor_bebas] is
       select [daftar_kolom]
       from [daftar_tabel]
       where [syarat];
    
    begin
    open [nama_cursor_bebas];
    loop
       fetch [nama_cursor_bebas] into [daftar_variabel];
       exit when [nama_cursor_bebas] %notfound;
       [aksi_lain]
    end loop;
    close [nama_cursor_bebas];
    end;
    /
    Explicit cursor harus melalui empat tahap yaitu declare, open, fetch danclose. Berikut ini adalah penjelasannya:
    1. Pada tahap declarecursor dideklarasikan pada blok PL/SQL.Cursor perlu dideklarasikan karena sifat cursor yang menyerupaivariable (dapat dipanggil dalam blok utama program) namun deklarasi untuk cursor diletakkan setelah deklarasi variable lain, tepat sebelum awal program (begin)
    2. Pada tahap opencursor dibuka (query dalam cursor dieksekusi dan hasilnya ditampung dalam memory)
    3. Pada tahap fetch, satu baris data dalam cursor diambil dan ditransfer ke variable penampung yang ada pada klausa into. Karena jumlah baris data kemungkinan lebih dari satu maka biasanya fetch diletakkan dalam looping yang akan berhenti begitu semua baris data dalam cursor selesai di-fetch ke variablepenampung
    4. Pada tahap closecursor ditutup dan hasil query dalam cursordihapus dari memory
    Berikut ini adalah contoh script PL/SQL yang menggunakan explicit cursor:
    declare
    nama_cari employees.first_name%type;
    nama_depan employees.first_name%type;
    alamat_email employees.email%type;
    telepon employees.phone_number%type;
    cursor anu is
       select first_name, email, phone_number
       from employees
       where first_name = nama_cari;
    
    begin
    nama_cari := '&masukkan_nama';
    open anu;
    loop
       fetch anu into nama_depan, alamat_email, telepon;
       exit when anu%notfound;
       dbms_output.put_line('Nama: '||nama_depan);
       dbms_output.put_line('Email: '||alamat_email||'@SemogaJaya.co.id');
       dbms_output.put_line('Telepon: '||telepon);
       dbms_output.put_line(‘-----------------------------------------------------------’);
    end loop;
    close anu;
    end;
    /
    dan jika script di atas dieksekusi maka hasilnya adalah sebagai berikut:

    Semua contoh di atas dapat digunakan pada sample database (schemaHR) yang terdapat pada Oracle 10g dan Oracle 10g XE. Semoga bermanfaat.



0 komentar:

Posting Komentar