АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Модуль DBMS_OUTPUT

Читайте также:
  1. I. Організація та проведення модульного і підсумкового контролю
  2. Варіанти питань до модульної контрольної роботи
  3. Варіанти питань до модульної контрольної роботи
  4. Варіанти питань до модульної роботи
  5. Геометричне зображення комплексного числа. Модуль та аргумент комплексного числа
  6. ГЛОБАЛЬНЫЙ РАЗРУШИТЕЛЬНЫЙ МОДУЛЬ
  7. ЕВРЕЙСКИЙ ВОПРОС И МОДУЛЬНАЯ ТЕОРИЯ
  8. Змістовий модуль 1
  9. Змістовий модуль 1.
  10. Змістовий модуль 2
  11. Змістовий модуль 2.
  12. ЗМІСТОВИЙ МОДУЛЬ 2. Створення ефективної організації (16 год.)

С помощью процедур модуля DBMS_OUTPUT реализованы две базовые операции: GET и PUT. Операция PUT берет свои аргументы и помещает во внутренний буфер для хранения. Операция GET считывает этот буфер и возвращает его содержимое процедуре в качестве аргумента. Размер буфера устанавливается с помощью процедуры ENABLE.

Выполнение операции PUT обеспечивается процедурами PUT, PUT_LINE и NEW_LINE, а выполнение операции GET – процедурами GET_LINE и GET_LINES. Управляют буфером процедуры ENABLE и DISABLE.

Процедуры PUT и PUT_LINE вызываются следующим образом:

 

procedure PUT (a varchar2);

procedure PUT (a number);

procedure PUT (a date);

 

procedure PUT_LINE (a varchar2);

procedure PUT_LINE (a number);

procedure PUT_LINE (a date);

 

Данные процедуры переопределяются типом параметра.

Буфер организован в виде строк, каждая из которых может состоять не более чем из 255 байт. PUT_LINE добавляет к аргументу символ новой строки, сообщая о конце строки; PUT же этого не делает. Вызов PUT_LINE аналогичен вызову PUT с последующим вызовом NEW_LINE.

Процедура GET_LINE вызывается следующим образом:

 

procedure GET_LINE (line out varchar2, status out integer);

 

Здесь line представляет собой последовательность символов, из которых состоит одна строка буфера, а status указывает на то, успешно или нет была считана эта строка. Максимальная длина строки ─ 255 байт. Если строка считана, то в переменной status находится 0, если в буфере больше нет строк для считывания, то в status ─ 1.

Аргументом процедуры GET_LINES является индексная таблица. Тип таблицы и вызов данной процедуры выглядят следующим образом:

 

type CHARARR is table of varchar2 (255) index by binary integer;

procedure GET_LINES (lines out chararr, numlines in out integer);

 

Здесь numlines ─ число запрошенных строк, на входе в GET_LINES указывается их число, на выходе ─ число фактически возвращаемых строк.

Тип CHARARR определен в модуле DBMS_OUTPUT, поэтому если GET_LINES вызывается явным образом, нужно объявлять переменную с типом DBMS_OUTPUT.CHARARR. Например:

 

declare

v_Data DBMS_OUTPUT.CHARARR;

v_NumLines number;

begin

DBMS_OUTPUT.ENABLE (1000000);

DBMS_OUTPUT.PUT_LINE (‘Line one’);

DBMS_OUTPUT.PUT_LINE (‘Line two’);

DBMS_OUTPUT.PUT_LINE (‘Line three’);

v_NumLines:=3;

DBMS_OUTPUT.GET_LINES(v_Data, v_NumLines);

for v_Counter in 1..3 v_NumLines loop

insert into temp_table (char_col)

values (v_Data(v_Counter));

end loop;

end;

 

Процедура ENABLE задает размер буфера в байтах, по умолчанию задается размер 20 000 байт, а максимальный размер – 1 000 000 байт. Если объявлена процедура DISABLE, то содержимое буфера уничтожается и последующие вызовы PUT и PUT_LINE бесполезны.

По существу, модуль DBMS_OUTPUT реализует алгоритм “первым пришел ─ первым обслужен”. В утилите SQL*Plus имеется средство, называемое SERVEROUTPUT (серверный вывод), команда SQL*Plus, называемая SET SERVEROUTPUT ON, неявно вызывает процедуру DBMS_OUTPUT.ENABLE, которая устанавливает внутренний буфер серверного вывода. Если нужно, можно указать размер буфера с помощью команды:

 

SET SERVEROUTPUT ON SIZE размер_буфера.

 

Здесь размер_буфера ─ первоначальный размер буфера (аргумент процедуры DBMS_OUTPUT.ENABLE, вызываемой по умолчанию). Процедура DBMS_OUTPUT.GET_LINES вызывается после окончания блока PL/SQL. Это означает, что результаты выводятся на экран после завершения блока, а не вовремя его выполнения. На рис. 3 продемонстрированы результаты использования средств серверного вывода в утилите SQL*Plus.

 

 

Рис 3. Использование SERVEROUTPUT и PUT_LINE

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)