Учебники

PL / SQL — вывод СУБД

В этой главе мы обсудим вывод СУБД на 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, он дает следующий результат —