В этой главе мы обсудим вывод СУБД на PL / SQL. DBMS_OUTPUT — это встроенный пакет, который позволяет отображать выходные данные, информацию об отладке и отправлять сообщения из блоков PL / SQL, подпрограмм, пакетов и триггеров. Мы уже использовали этот пакет на протяжении всего нашего урока.
Давайте посмотрим на небольшой фрагмент кода, который отобразит все пользовательские таблицы в базе данных. Попробуйте в своей базе данных перечислить все имена таблиц —
BEGIN dbms_output.put_line (user || ' Tables in the database:'); FOR t IN (SELECT table_name FROM user_tables) LOOP dbms_output.put_line(t.table_name); END LOOP; END; /
DBMS_OUTPUT Подпрограммы
Пакет DBMS_OUTPUT имеет следующие подпрограммы —
S.No | Подпрограмма и цель | |
---|---|---|
1 |
DBMS_OUTPUT.DISABLE; Отключает вывод сообщений. |
|
2 |
DBMS_OUTPUT.ENABLE (buffer_size IN INTEGER DEFAULT 20000); Включает вывод сообщений. Значение NULL в buffer_size представляет неограниченный размер буфера. |
|
3 |
DBMS_OUTPUT.GET_LINE (строка OUT VARCHAR2, статус OUT INTEGER); Получает одну строку буферизованной информации. |
|
4 |
DBMS_OUTPUT.GET_LINES (строки OUT CHARARR, строки INUT OUT INTEGER); Извлекает массив строк из буфера. |
|
5 |
DBMS_OUTPUT.NEW_LINE; Ставит маркер конца строки. |
|
6 |
DBMS_OUTPUT.PUT (элемент IN VARCHAR2); Помещает частичную строку в буфер. |
|
7 |
DBMS_OUTPUT.PUT_LINE (элемент IN VARCHAR2); Помещает строку в буфер. |
DBMS_OUTPUT.DISABLE;
Отключает вывод сообщений.
DBMS_OUTPUT.ENABLE (buffer_size IN INTEGER DEFAULT 20000);
Включает вывод сообщений. Значение NULL в buffer_size представляет неограниченный размер буфера.
DBMS_OUTPUT.GET_LINE (строка OUT VARCHAR2, статус OUT INTEGER);
Получает одну строку буферизованной информации.
DBMS_OUTPUT.GET_LINES (строки OUT CHARARR, строки INUT OUT INTEGER);
Извлекает массив строк из буфера.
DBMS_OUTPUT.NEW_LINE;
Ставит маркер конца строки.
DBMS_OUTPUT.PUT (элемент IN VARCHAR2);
Помещает частичную строку в буфер.
DBMS_OUTPUT.PUT_LINE (элемент IN VARCHAR2);
Помещает строку в буфер.
пример
DECLARE lines dbms_output.chararr; num_lines number; BEGIN -- enable the buffer with default size 20000 dbms_output.enable; dbms_output.put_line('Hello Reader!'); dbms_output.put_line('Hope you have enjoyed the tutorials!'); dbms_output.put_line('Have a great time exploring pl/sql!'); num_lines := 3; dbms_output.get_lines(lines, num_lines); FOR i IN 1..num_lines LOOP dbms_output.put_line(lines(i)); END LOOP; END; /
Когда приведенный выше код выполняется в командной строке SQL, он дает следующий результат —