Belajar Menulis dan Membaca Part 4 [Cursor Eksplisit dan Implisit]

Diposting oleh about my life ^_^

CURSOR

Cursor merupakan sejenis variabel yang dapat digunakan untuk menampung banyak nilai berupa baris atau record. dapat dikatakan pula kursor adalah pointer yang menunjuk ke suatu bagian memori untuk menyimpan hasil intruksi SQL. hasil intruksi tersebut biasanya merupakan multiple row, dan kursor digunakan untuk menunjuk pointer ke salah satu baris. Kursor terdiri dari 2 macam, yaitu kursor implisit dan eksplisit. 

1. Cursor Implisit 
    cursor implisit merupakan cursor yang tidak perlu di deklarasikan sebelumnya. cursor ini berasosiasi dengan perintah SELECT, INSERT, DELETE, dan UPDATE.

contoh koding yang menggunakan cursor implisit
    contoh 1:

    declare
    nama_cari varchar(15);
    nama_depan varchar(15);
    nama_belakang varchar(15);
    gaji varchar(10);
    begin
    nama_cari := '&masukkan_nama';
    select first_name, last_name, salary
    into nama_depan, nama_belakang, gaji
    from employees
    where first_name = nama_cari;
    dbms_output.put_line('pegawai bernama '||nama_depan||’ ‘ ||nama_belakang||' gajinya adalah USD '||gaji);
    end;
    /

 contoh 2:
    declare 
    nama_cari employees.first_name%typenama_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;
    /

2. Cursor Eksplisit
    Cursor eksplisit merupakan cursor yang harus dibuka dan ditutup secara manual. 
       
DOFC  (DECLARE, OPEN, FETCH, CLOSE)
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;
/

contoh kodingan cursor eksplisit
contoh 1:
     declare
nama_cari employees.first_name%type;
nama_depan employees.first_name%type;
nama_belakang employees.last_name%type;
gaji employees.salary%type;
cursor anu is
select first_name, last_name, salary
from employees
where first_name = nama_cari;
begin
nama_cari := '&masukkan_nama';
open anu;
loop
  fetch anu into nama_depan, nama_belakang, gaji;
  exit when anu%notfound;
  dbms_output.put_line('pegawai bernama '||nama_depan||' ' ||nama_belakang||' gajinya adalah USD '||gaji);
end loop;
close anu;
end;
/

 contoh 2:   
         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;
/

 
Menambahkan Exception Handling
         setiap kesalahan (error) atau peringatan (warning) yang muncul karena suatu perintah disebut sebagai exception. blok exception dapat ditempatkan dalam blok sebagai exception handling
 

contoh peletakan exception:
    declare
    a employees.first_name%type;
    b employees.first_name%type;
    c employees.first_name%type; 
    begin
    c:='&nama_cari';
    select first_name, salary
    into a, b
    from employees
    where first_name = c;
    dbms_output.put_line('Gajinya '||a||' adalah USD '||B);
    exception
    when no_data_found then
      dbms_output.put_line('Maaf nama '||c||' tidak ditemukan');
    when too_many_rows then
      dbms_output.put_line('Maaf nama '||c||' lebih dari 1
      orang');

    end; 
    /

 

 

Belajar Menulis dan Membaca Part 3 [Looping]

Diposting oleh about my life ^_^

- LOOP
  strukutur simpel loop digunakan bila diinginkan minimal iterasi dijalankan satu kali. dalam struktur ini harus ditambahkan statement exit when untuk menghindari eksekusi tak terbatas (infinitif).


contoh program yang memakai loop:
      DECLARE
      total number(9);
      counter number(6);

      BEGIN
      total:=0;
      counter:=10;
      LOOP
         total:=total+counter;
         EXIT WHEN total > 50;
      END LOOP;
      DBMS_OUTPUT.PUT_LINE('Counter: ' || counter);
      DBMS_OUTPUT.PUT_LINE('Total: ' || total);

      END;
      /

- FOR
  Struktur ini tidak memiliki kondisi, sehingga perlu didefinisikan indeks minimal dan maksimal sebagai batas iterasi. umumnya struktur ini digunakan untuk iterasi yang banyaknya sudah diketahui dengan pasti.


contoh program yang memakai for:
 contoh 1:
     DECLARE
     x number(3);


    BEGIN
    x:=berapa;
   for i IN 1..x LOOP
      DBMS_OUTPUT.PUT_LINE('Ini angka ' || i);
   END LOOP;
   END;
   /


 contoh 2 (memakai IF)

    Declare
    x number(3);

    BEGIN
    X:=&berapa;
    FOR i IN 1..x LOOP
    if mod(i,2) = 1 then
       DBMS_OUTPUT.PUT_LINE('Ini angka ' || i );
    else
      DBMS_OUTPUT.PUT_LINE('Ini angka ' || ‘i’ );
    end if;
    END LOOP;
    END;
    /

- Statemen WHILE
  Struktur ini selalu memeriksa kebenaran kondisi di awal blok iterasi. Bila kondisi bernilai FALSE, maka statemen-
statemen dalam blok iterasi tidak akan dieksekusi.

contoh program yang memakai WHILE:
DECLARE
i NUMBER(3);
hasil NUMBER(5);

BEGIN
i:=1;
WHILE i <= 10 LOOP
   hasil := i**3;
   DBMS_OUTPUT.PUT_LINE(i ||' pangkat 3 = '|| hasil );
   i := i + 1;
END LOOP;

END;
/