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); Включает вывод сообщений. НУЛЕВОЕ значениеbuffer_size представляет неограниченный размер буфера. |
|
3 | DBMS_OUTPUT.GET_LINE (line OUT VARCHAR2, status OUT INTEGER); Извлекает одну строку буферизованной информации. |
|
4 | DBMS_OUTPUT.GET_LINES (lines OUT CHARARR, numlines IN OUT INTEGER); Извлекает из буфера массив строк. |
|
5 | DBMS_OUTPUT.NEW_LINE; Ставит маркер конца строки. |
|
6 | DBMS_OUTPUT.PUT(item IN VARCHAR2); Помещает частичную строку в буфер. |
|
7 | DBMS_OUTPUT.PUT_LINE(item 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, он дает следующий результат:
Hello Reader!
Hope you have enjoyed the tutorials!
Have a great time exploring pl/sql!
PL/SQL procedure successfully completed.