PL/SQL - DBMS Output: руковод BEGINNER'S Guide
Здравствуйте, будущие маги баз данных! Сегодня мы отправляемся в увлекательное путешествие в мир PL/SQL и рассмотрим полезный инструмент под названием DBMS Output. Не волнуйтесь, если вы никогда раньше не писали ни строчки кода – я буду вашим доброжелательным проводником, и мы будем двигаться шаг за шагом. К концу этого учебника вы будете выводить сообщения, как профессионал!
Что такое DBMS Output?
Прежде чем углубиться в детали, давайте поймем, что такое DBMS Output. Представьте, что вы готовите сложный рецепт. Не было бы полезно, если бы ваша духовка могла告诉你, что происходит внутри? Именно это делает DBMS Output для вашего кода PL/SQL!
DBMS Output - это пакет в PL/SQL, который позволяет вам выводить сообщения в буфер, который вы можете затем viewed. Это похоже на маленькую записную книжку, где ваша программа может записывать заметки для вас, чтобы вы могли их прочитать позже. Это incredibly полезно для отладки вашего кода и понимания того, что происходит на разных этапах выполнения вашей программы.
Начало работы с DBMS Output
Чтобы использовать DBMS Output, нам нужно сделать две вещи:
- Включить буфер DBMS Output
- Использовать процедуру PUT_LINE для записи сообщений
Давайте рассмотрим простой пример:
BEGIN
DBMS_OUTPUT.PUT_LINE('Привет, мир!');
END;
/
Если вы выполните этот код, вы можете быть удивлены, увидев...ничего! Потому что мы еще не включили буфер DBMS Output. Давайте исправим это:
SET SERVEROUTPUT ON;
BEGIN
DBMS_OUTPUT.PUT_LINE('Привет, мир!');
END;
/
Теперь вы должны увидеть:
Привет, мир!
Поздравления! Вы только что написали свой первый программный блок PL/SQL с выводом. Давайте разберем, что произошло:
-
SET SERVEROUTPUT ON;
включает буфер DBMS Output. -
BEGIN
иEND;
标记我们的PL/SQL块的开始和结束。 -
DBMS_OUTPUT.PUT_LINE('Привет, мир!');
- это команда, которая действительно выводит наше сообщение. - Символ
/
в конце命令 SQL*Plus execute PL/SQL блок.
Подпрограммы DBMS_OUTPUT
Теперь, когда мы обсушили ноги, давайте рассмотрим различные подпрограммы (представьте их как инструменты), доступные в пакете DBMS_OUTPUT. Вот таблица, резюмирующая их:
Подпрограмма | Описание |
---|---|
PUT | Помещает строку в буфер |
PUT_LINE | Помещает строку в буфер |
NEW_LINE | Вставляет разрыв строки |
GET_LINE | Получает строку из буфера |
GET_LINES | Получает несколько строк из буфера |
ENABLE | Включает пакет DBMS_OUTPUT |
DISABLE | Отключает пакет DBMS_OUTPUT |
Давайте рассмотрим каждую из них подробнее с примерами.
PUT и PUT_LINE
Процедура PUT
добавляет текст в буфер без разрыва строки, в то время как PUT_LINE
добавляет текст и затем начинает новую строку. Вот пример:
BEGIN
DBMS_OUTPUT.PUT('Привет');
DBMS_OUTPUT.PUT(' ');
DBMS_OUTPUT.PUT('мир');
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('Как дела?');
END;
/
Вывод:
Привет мир
Как дела?
В этом примере мы использовали PUT
, чтобы постепенно построить строку, затем использовали NEW_LINE
, чтобы начать новую строку. Команда PUT_LINE
автоматически начинает новую строку после своего сообщения.
NEW_LINE
Мы уже видели NEW_LINE
в действии. Это просто, но мощно - оно просто начинает новую строку в вашем выводе. Вот еще один пример:
BEGIN
DBMS_OUTPUT.PUT_LINE('Строка 1');
DBMS_OUTPUT.NEW_LINE;
DBMS_OUTPUT.PUT_LINE('Строка 3');
END;
/
Вывод:
Строка 1
Строка 3
Обратите внимание на пустую строку между "Строка 1" и "Строка 3"? Это наш NEW_LINE
в действии!
GET_LINE и GET_LINES
Эти процедуры немного отличаются - они используются для получения вывода из буфера. Это особенно полезно, когда вы вызываете PL/SQL из другого языка программирования и хотите captured вывод.
Вот простой пример GET_LINE
:
DECLARE
v_line VARCHAR2(255);
v_status INTEGER;
BEGIN
DBMS_OUTPUT.PUT_LINE('Это тест');
DBMS_OUTPUT.GET_LINE(v_line, v_status);
IF v_status = 0 THEN
DBMS_OUTPUT.PUT_LINE('Получено: ' || v_line);
ELSE
DBMS_OUTPUT.PUT_LINE('Больше строк нет');
END IF;
END;
/
В этом примере мы поместили строку в буфер, затем немедленно получили ее с помощью GET_LINE
. Переменная v_status
告诉我们, успешно ли мы получили строку (0) или нет (1).
ENABLE и DISABLE
Эти процедуры позволяют вам программно включать и отключать DBMS_OUTPUT. Вот как вы можете использовать их:
BEGIN
DBMS_OUTPUT.DISABLE;
DBMS_OUTPUT.PUT_LINE('Вы этого не увидите');
DBMS_OUTPUT.ENABLE;
DBMS_OUTPUT.PUT_LINE('Но это вы увидите!');
END;
/
Вывод:
Но это вы увидите!
Как видите, первый PUT_LINE
не производит никакого вывода, потому что мы отключили DBMS_OUTPUT. После того, как мы снова включаем его, мы можем увидеть вывод, как обычно.
Заключение
И вот мы добрались до финиша, друзья! Мы отправились в путешествие по земле DBMS Output, от его базового использования до различных подпрограмм. Помните, DBMS Output - это как голос вашей программы - используйте его, чтобы понять, что происходит в вашем коде, отлаживать проблемы и庆祝овать свои успехи.
Пока вы продолжаете свои приключения в PL/SQL, вы найдете DBMS Output invaluable инструментом в вашем наборе разработчика. Он прост, он мощен, и теперь он ваш!
Продолжайте практиковаться, сохраняйте любопытство и счастливого кодирования!
Credits: Image by storyset