PL/SQL - DBMS Output: A Beginner's Guide

Hai there, bakal ahli pangkalan data! Hari ini, kita bakal memulakan sebuah perjalanan menarik ke dunia PL/SQL dan menjelajahkan alat praktis yang dipanggil DBMS Output. Jangan bimbang jika anda belum pernah menulis satu baris kod sebelum ini - saya akan menjadi panduannya yang ramah, dan kita akan mengambil langkah demi langkah. Pada akhir panduan ini, anda akan menjadi handal dalam mengoutputkan mesejseperti seorang pro!

PL/SQL - DBMS Output

Apa Itu DBMS Output?

Sebelum kita masuk ke dalam hal yang berbelit-belit, mari kita memahami apa sebenarnya DBMS Output. Bayangkan anda sedang memasak resipi yang kompleks. Adakah ia akan membantu jika oven anda dapat memberitahu anda apa yang sedang berlaku di dalamnya? Itu betul apa yang DBMS Output lakukan untuk kod PL/SQL anda!

DBMS Output adalah sebuah paket dalam PL/SQL yang membolehkan anda cetak mesej ke dalam buffer, yang anda boleh lihat kemudian. Itu seperti memiliki buku catatan kecil di mana program anda dapat menulis catatan untuk anda baca kemudian. Ini sangat berguna untuk debugging kod anda dan memahami apa yang berlaku di peringkat berbeza eksekusi program anda.

Memulakan Pengerjaan DBMS Output

Untuk menggunakan DBMS Output, kita perlu melakukan dua hal:

  1. Enable buffer DBMS Output
  2. Gunakan prosedur PUT_LINE untuk menulis mesej

Mari lihat contoh yang mudah:

BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World!');
END;
/

Jika anda menjalankan kod ini, anda mungkin terkejut untuk melihat... tiada apa-apa! Itu kerana kita belum enable buffer DBMS Output. Mari kita betulkan itu:

SET SERVEROUTPUT ON;

BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World!');
END;
/

Sekarang anda akan melihat:

Hello, World!

Tahniah! Anda telah menulis program PL/SQL pertama anda dengan output. Mari kitaongkikan apa yang terjadi:

  1. SET SERVEROUTPUT ON; enable buffer DBMS Output.
  2. BEGIN dan END; menandakan permulaan dan pengakhiran blok PL/SQL kita.
  3. DBMS_OUTPUT.PUT_LINE('Hello, World!'); adalah perintah yang sebenarnya mencetak mesej kita.
  4. Tanda / di akhir memberitahu SQL*Plus untuk menjalankan blok PL/SQL.

Subprogram DBMS_OUTPUT

Sekarang kita sudah mendapat kaki kita basah, mari kita jelajah subprogram (berfikir tentang mereka sebagai alat) yang berbeza dalam paket DBMS_OUTPUT. Berikut adalah tabel yang menggabungkannya:

Subprogram Keterangan
PUT Menempatkan string di dalam buffer
PUT_LINE Menempatkan baris di dalam buffer
NEW_LINE Sisipkan pemisah baris
GET_LINE Dapatkan baris dari buffer
GET_LINES Dapatkan beberapa baris dari buffer
ENABLE Enable paket DBMS_OUTPUT
DISABLE Disable paket DBMS_OUTPUT

Mari kita lihat setiap daripada ini secara detil dengan contoh.

PUT dan PUT_LINE

Prosedur PUT menambahkan teks ke dalam buffer tanpa pemisah baris, sedangkan PUT_LINE menambahkan teks dan kemudian memulakan baris baru. Berikut adalah contoh:

BEGIN
DBMS_OUTPUT.PUT('Hello');
DBMS_OUTPUT.PUT(' ');
DBMS_OUTPUT.PUT('World');
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('How are you?');
END;
/

Output:

Hello World
How are you?

Dalam contoh ini, kita menggunakan PUT untuk membina baris secara beransur, kemudian menggunakan NEW_LINE untuk memulakan baris baru. PUT_LINE secara automatik memulakan baris baru setelah mesejnya.

NEW_LINE

Kita sudah melihat NEW_LINE dalam aksi. Ia mudah tetapi kuat - ia hanya memulakan baris baru dalam output anda. Berikut adalah contoh lain:

BEGIN
DBMS_OUTPUT.PUT_LINE('Line 1');
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('Line 3');
END;
/

Output:

Line 1

Line 3

Perhatikan baris kosong antara "Line 1" dan "Line 3"? Itu adalah kerja NEW_LINE kita!

GET_LINE dan GET_LINES

Prosedur ini sedikit berbeza - mereka digunakan untuk mengambil output dari buffer. Ini sangat berguna ketika anda memanggil PL/SQL dari bahasa pemrograman lain dan ingin menangkap output.

Berikut adalah contoh ringkas GET_LINE:

DECLARE
v_line VARCHAR2(255);
v_status INTEGER;
BEGIN
DBMS_OUTPUT.PUT_LINE('This is a test');
DBMS_OUTPUT.GET_LINE(v_line, v_status);
IF v_status = 0 THEN
DBMS_OUTPUT.PUT_LINE('Retrieved: ' || v_line);
ELSE
DBMS_OUTPUT.PUT_LINE('No more lines');
END IF;
END;
/

Dalam contoh ini, kita menempatkan satu baris ke dalam buffer, kemudian segera mengambilnya dengan GET_LINE. Variabel v_status memberitahu kita sama ada kita berjaya mengambil baris (0) atau jika tiada lagi baris untuk diambil (1).

ENABLE dan DISABLE

Prosedur ini membolehkan anda menghidupkan dan mematikan DBMS_OUTPUT secara program. Berikut adalah bagaimana anda mungkin menggunainya:

BEGIN
DBMS_OUTPUT.DISABLE;
DBMS_OUTPUT.PUT_LINE('You won''t see this');
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE('But you will see this!');
END;
/

Output:

But you will see this!

Seperti yang anda lihat, PUT_LINE pertama tidak menghasilkan apa-apa kerana kita mematikan DBMS_OUTPUT. Setelah kita hidupkannya lagi, kita boleh melihat output seperti biasa.

Kesimpulan

Dan di situ, teman-teman! Kita telah menjelajah melalui negeri DBMS Output, dari penggunaan dasar ke subprogram yang berbeza. Ingat, DBMS Output adalah seperti suara program anda - gunakan ia untuk memahami apa yang berlaku dalam kod anda, debug masalah, dan merayakan kejayaan anda.

Sekiranya anda teruskan pengembaraan PL/SQL anda, anda akan menemui DBMS Output adalah alat yang nilaiannya tak ternilai dalam set alat pengembang anda. Ia mudah, kuat, dan sekarang ini, ia milik anda untuk digunakan!

Teruslatih, kekal curiga, dan kod yang gembira!

Credits: Image by storyset