PL/SQL - DBMS Output: Hướng dẫn cho người mới bắt đầu
Xin chào các bạn tương lai của các phù thủy cơ sở dữ liệu! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của PL/SQL và khám phá một công cụ hữu ích gọi là DBMS Output. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau bước từng bước. Cuối cùng của hướng dẫn này, bạn sẽ có thể xuất các thông báo như một chuyên gia!
DBMS Output là gì?
Trước khi chúng ta đi sâu vào chi tiết, hãy hiểu về DBMS Output. Hãy tưởng tượng bạn đang nấu một món ăn phức tạp. Liệu có hữu ích nếu lò nướng của bạn có thể告诉 bạn đang xảy ra gì bên trong không? Đó chính xác là điều mà DBMS Output làm cho mã PL/SQL của bạn!
DBMS Output là một gói trong PL/SQL cho phép bạn in các thông báo vào một bộ đệm, mà bạn có thể xem sau. Nó giống như một cuốn sổ tay nhỏ mà chương trình của bạn có thể ghi chú cho bạn đọc sau. Điều này vô cùng hữu ích cho việc gỡ lỗi mã của bạn và hiểu đang xảy ra gì ở các giai đoạn khác nhau của việc thực thi chương trình.
Bắt đầu với DBMS Output
Để sử dụng DBMS Output, chúng ta cần làm hai điều:
- Kích hoạt bộ đệm DBMS Output
- Sử dụng thủ tục PUT_LINE để ghi các thông báo
Hãy xem một ví dụ đơn giản:
BEGIN
DBMS_OUTPUT.PUT_LINE('Xin chào, Thế giới!');
END;
/
Nếu bạn chạy đoạn mã này, bạn có thể sẽ ngạc nhiên khi thấy... không có gì! Đó là vì chúng ta chưa kích hoạt bộ đệm DBMS Output. Hãy sửa điều đó:
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Xin chào, Thế giới!');
END;
/
Bây giờ bạn nên thấy:
Xin chào, Thế giới!
Chúc mừng! Bạn vừa viết chương trình PL/SQL đầu tiên với đầu ra. Hãy phân tích điều đã xảy ra:
-
SET SERVEROUTPUT ON;
kích hoạt bộ đệm DBMS Output. -
BEGIN
vàEND;
đánh dấu bắt đầu và kết thúc khối PL/SQL của chúng ta. -
DBMS_OUTPUT.PUT_LINE('Xin chào, Thế giới!');
là lệnh thực sự in thông báo của chúng ta. - Dấu
/
ở cuối cho biết SQL*Plus thực thi khối PL/SQL.
Các thủ tục của DBMS_OUTPUT
Bây giờ chúng ta đã làm quen, hãy khám phá các thủ tục khác nhau (hãy nghĩ của chúng như các công cụ) có sẵn trong gói DBMS_OUTPUT. Dưới đây là bảng tóm tắt:
Thủ tục | Mô tả |
---|---|
PUT | Đặt một chuỗi vào bộ đệm |
PUT_LINE | Đặt một dòng vào bộ đệm |
NEW_LINE | Chèn một dòng mới |
GET_LINE | Truy xuất một dòng từ bộ đệm |
GET_LINES | Truy xuất nhiều dòng từ bộ đệm |
ENABLE | Kích hoạt gói DBMS_OUTPUT |
DISABLE | Vô hiệu hóa gói DBMS_OUTPUT |
Hãy xem chi tiết từng thủ tục với các ví dụ.
PUT và PUT_LINE
Thủ tục PUT
thêm văn bản vào bộ đệm mà không có dòng mới, trong khi PUT_LINE
thêm văn bản và sau đó bắt đầu một dòng mới. Dưới đây là một ví dụ:
BEGIN
DBMS_OUTPUT.PUT('Xin chào');
DBMS_OUTPUT.PUT(' ');
DBMS_OUTPUT.PUT('Thế giới');
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('Bạn khỏe không?');
END;
/
Đầu ra:
Xin chào Thế giới
Bạn khỏe không?
Trong ví dụ này, chúng ta sử dụng PUT
để xây dựng một dòng từng phần, sau đó sử dụng NEW_LINE
để bắt đầu một dòng mới. PUT_LINE
tự động bắt đầu một dòng mới sau thông báo của nó.
NEW_LINE
Chúng ta đã thấy NEW_LINE
trong hành động. Nó đơn giản nhưng mạnh mẽ - nó chỉ bắt đầu một dòng mới trong đầu ra của bạn. Dưới đây là một ví dụ khác:
BEGIN
DBMS_OUTPUT.PUT_LINE('Dòng 1');
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('Dòng 3');
END;
/
Đầu ra:
Dòng 1
Dòng 3
Lưu ý dòng trống giữa "Dòng 1" và "Dòng 3"? Đó là NEW_LINE
đang hoạt động!
GET_LINE và GET_LINES
Các thủ tục này khác một chút - chúng được sử dụng để truy xuất đầu ra từ bộ đệm. Điều này đặc biệt hữu ích khi bạn gọi PL/SQL từ một ngôn ngữ lập trình khác và muốn bắt đầu đầu ra.
Dưới đây là một ví dụ đơn giản của GET_LINE
:
DECLARE
v_line VARCHAR2(255);
v_status INTEGER;
BEGIN
DBMS_OUTPUT.PUT_LINE('Đây là một bài kiểm tra');
DBMS_OUTPUT.GET_LINE(v_line, v_status);
IF v_status = 0 THEN
DBMS_OUTPUT.PUT_LINE('Đã truy xuất: ' || v_line);
ELSE
DBMS_OUTPUT.PUT_LINE('Không có dòng nào khác');
END IF;
END;
/
Trong ví dụ này, chúng ta đang đặt một dòng vào bộ đệm, sau đó ngay lập tức truy xuất nó với GET_LINE
. Biến v_status
cho chúng ta biết liệu chúng ta đã thành công trong việc truy xuất một dòng (0) hay không có dòng nào để truy xuất (1).
ENABLE và DISABLE
Các thủ tục này cho phép bạn bật và tắt DBMS_OUTPUT một cách chương trình. Dưới đây là cách bạn có thể sử dụng chúng:
BEGIN
DBMS_OUTPUT.DISABLE;
DBMS_OUTPUT.PUT_LINE('Bạn sẽ không thấy này');
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE('Nhưng bạn sẽ thấy này!');
END;
/
Đầu ra:
Nhưng bạn sẽ thấy này!
Như bạn có thể thấy, PUT_LINE
đầu tiên không tạo ra bất kỳ đầu ra nào vì chúng ta đã vô hiệu hóa DBMS_OUTPUT. Sau khi chúng ta kích hoạt lại, chúng ta có thể thấy đầu ra như bình thường.
Kết luận
Và đó là tất cả, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của DBMS Output, từ cách sử dụng cơ bản đến các thủ tục khác nhau. Nhớ rằng DBMS Output là giọng nói của chương trình của bạn - sử dụng nó để hiểu đang xảy ra gì trong mã của bạn, gỡ lỗi các vấn đề và庆祝 thành công.
Khi bạn tiếp tục hành trình PL/SQL của mình, bạn sẽ thấy DBMS Output là một công cụ vô giá trong bộ công cụ phát triển của bạn. Nó đơn giản, mạnh mẽ, và bây giờ, nó là của bạn để sử dụng!
Tiếp tục thực hành, giữ vững sự tò mò, và chúc bạn lập trình vui vẻ!
Credits: Image by storyset