PL/SQL - DBMS Output: руковод BEGINNER'S Guide

Здравствуйте, будущие маги баз данных! Сегодня мы отправляемся в увлекательное путешествие в мир PL/SQL и рассмотрим полезный инструмент под названием DBMS Output. Не волнуйтесь, если вы никогда раньше не писали ни строчки кода – я буду вашим доброжелательным проводником, и мы будем двигаться шаг за шагом. К концу этого учебника вы будете выводить сообщения, как профессионал!

PL/SQL - DBMS Output

Что такое DBMS Output?

Прежде чем углубиться в детали, давайте поймем, что такое DBMS Output. Представьте, что вы готовите сложный рецепт. Не было бы полезно, если бы ваша духовка могла告诉你, что происходит внутри? Именно это делает DBMS Output для вашего кода PL/SQL!

DBMS Output - это пакет в PL/SQL, который позволяет вам выводить сообщения в буфер, который вы можете затем viewed. Это похоже на маленькую записную книжку, где ваша программа может записывать заметки для вас, чтобы вы могли их прочитать позже. Это incredibly полезно для отладки вашего кода и понимания того, что происходит на разных этапах выполнения вашей программы.

Начало работы с DBMS Output

Чтобы использовать DBMS Output, нам нужно сделать две вещи:

  1. Включить буфер DBMS Output
  2. Использовать процедуру PUT_LINE для записи сообщений

Давайте рассмотрим простой пример:

BEGIN
DBMS_OUTPUT.PUT_LINE('Привет, мир!');
END;
/

Если вы выполните этот код, вы можете быть удивлены, увидев...ничего! Потому что мы еще не включили буфер DBMS Output. Давайте исправим это:

SET SERVEROUTPUT ON;

BEGIN
DBMS_OUTPUT.PUT_LINE('Привет, мир!');
END;
/

Теперь вы должны увидеть:

Привет, мир!

Поздравления! Вы только что написали свой первый программный блок PL/SQL с выводом. Давайте разберем, что произошло:

  1. SET SERVEROUTPUT ON; включает буфер DBMS Output.
  2. BEGIN и END;标记我们的PL/SQL块的开始和结束。
  3. DBMS_OUTPUT.PUT_LINE('Привет, мир!'); - это команда, которая действительно выводит наше сообщение.
  4. Символ / в конце命令 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