Membaca Output Stored Procedure Oracle Dengan SQLPlus

Saya pernah menghadapi aplikasi yang codingnya semua dilakukan dalam PL/SQL Oracle. Semua input ditangkap oleh PHP, yang kemudian akan melempar inputnya sebagai input parameter untuk stored procedure. PHP lalu akan membaca keluaran stored procedure ini dan menampilkannya ke webpage.

Sebagai ilustrasi:

create procedure some_proc(
  out_cursor out sys_refcursor,
  in_param in varchar2
)
as
begin
  open out_cursor for select * from tbl_test where col1=param;
end;

Procedure Oracle ini lalu dipanggil melalui PHP dengan code:


$p=oci_parse($conn,"begin some_proc(:rc,:param); end;");
$refcur = oci_new_cursor($conn);
oci_bind_by_name($p, ':rc', $refcur, -1, OCI_B_CURSOR);
oci_bind_by_name($count, ':param', $_POST['param']);
oci_execute($p);
oci_execute($refcur);
while ($row=oci_fetch_array($refcur)){
  echo $row[0];
}

Tapi, kadang saya perlu melakukan debugging, misalnya karena algoritma logic yang ada di dalam procedurenya ada yang salah. Untuk itu, akan sangat membantu jika saya bisa melihat output dari procedurenya. Ada beberapa cara yang biasa saya lakukan untuk melihat output suatu procedure:

  1. Diprint outputnya menggunakan PHP –> Cara ini saya tinggalkan karena kadang ada salah-salah ceroboh kecil apa aja, yang menyebabkan kalau diprint lewat PHP hasilnya mah ga ada output apa-apa.
  2. Diprint output procedurenya pakai DBMS_OUTPUT.PUT_LINE –> Cara ini juga saya tinggalkan, karena sering berujung harus bikin loop di procedurenya hanya sekedar untuk memprint cursor, which is suatu keribetan tersendiri.
  3. Cara yang menurut saya paling simple, gunakan SQLPlus. Caranya, setelah login ke SQLPlus:

SQL> var rc refcursor
SQL> execute some_proc(:rc,'param')
SQL> print rc

Selesai, jika ada perlu lagi untuk mengubah-ngubah logic di dalam procedurenya, tinggal execute ulang, dan print ulang.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s