Читайте также: |
|
33. Язык PL/SQL:динамический SQL.
Dynamic SQL — расширение базового языка программирования, позволяющее встраивать команды языка структурированных запросов SQL непосредственно в текст программы. В отличие от Embedded SQL, позволяет выполнять запросы, конструируемые или запрашиваемые у пользователя во время выполнения. Прежде чем программа, использующая dynamic SQL, будет откомпилирована компилятором базового языка программирования, она должна быть обработана специальным препроцессором.
В случае с NDS необходимо создать строку, содержащую соответствующее выражение, подлежащее дальнейшему выполнению, а после передать эту строку в качестве параметра команде execute_immediate.
DECLARE
STM1 VARCHAR2(150):= 'BEGIN SELECT TEACHER_NAME INTO:1 FROM TEACHER WHERE TEACHER =:2; END;';
T TEACHER.TEACHER%TYPE;
TN TEACHER.TEACHER_NAME%TYPE;
REC TEACHER%ROWTYPE;
BEGIN
T:= 'СМЛВ';
EXECUTE IMMEDIATE STM1 USING OUT TN, IN T;
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
DBMS_OUTPUT.PUT_LINE(TRIM(T)||' '||TN);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
END;
34. Язык PL/SQL: входные и выходные параметры, позиционный и параметрический форматы фактических параметров. Значения параметров по умолчанию.
Функции и процедуры могут получать различные параметры при вызове. Параметры могут быть трех типов: IN (входные), OUT (выходные), IN/OUT (одновременно и входные и выходные).
CREATE OR REPLACE PROCEDURE XSM(
MIN_CY IN AUDITORIUM.AUDITORIUM_CAPACITY%TYPE DEFAULT 20,
MAX_CY IN OUT AUDITORIUM.AUDITORIUM_CAPACITY%TYPE,
N_AUD OUT NUMBER)
IS
NO_MAX_CY EXCEPTION;
BEGIN
SELECT COUNT(*), MAX(AUDITORIUM_CAPACITY) INTO N_AUD, MAX_CY FROM AUDITORIUM
WHERE AUDITORIUM_CAPACITY>=MIN_CY AND AUDITORIUM_CAPACITY<=MAX_CY;
IF N_AUD IS NULL
THEN RAISE NO_MAX_CY;
END IF;
EXCEPTION
WHEN NO_MAX_CY THEN RETURN;
WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM);
END XSM;
При вызове процедур и функций параметры можно передавать тремя способами:
Параметрическая форма передачи параметров - передача пар значение_параметра=>имя_параметра, где очередность не имеет значения.
Позиционная – передача набора значений параметров в заранее строго определенной фиксированной последовательности.
Смешанная – совмещает два вышеописанных способа, часть параметров передается позиционно и они указываются первыми, остальные же параметры передаются параметрически.
--ПОЗИЦИОННЫЙ
XSUM(
MIN_CY,
MAX_CY,
N_AUD
);
--ПАРАМЕТРИЧЕСКИЙ
XSUM(
MAX_CY => MAX_CY,
N_AUD => N_AUD,
MIN_CY => MIN_CY
);
--СМЕШАННЫЙ
XSUM(
MIN_CY,
N_AUD => N_AUD,
MAX_CY => MAX_CY
);
При создании функции или процедуры можно использовать для его параметров опцию default, задающую значение параметра по умолчанию, в случае если фун. или проц. вызывается без передачи значения этого параметра, то используется его значение по умолчанию.
DECLARE
MAX_CY NUMBER;
N_AUD NUMBER;
BEGIN
MAX_CY:=50;
XSM(
MAX_CY => MAX_CY,
N_AUD => N_AUD
);
DBMS_OUTPUT.PUT_LINE('MAX_CY = ' || MAX_CY);
DBMS_OUTPUT.PUT_LINE('N_AUD = ' || N_AUD);
END; -- Использование опции default для параметров при вызове функции.
35. Язык PL/SQL: применение XML.
XML (англ. eXtensible Markup Language — расширяемый язык разметки) — рекомендованный Консорциумом Всемирной паутины язык разметки, фактически представляющий собой свод общих синтаксических правил. XML — текстовый формат, предназначенный для хранения структурированных данных (взамен существующих файлов баз данных), для обмена информацией междупрограммами, а также для создания на его основе более специализированных языков разметки (например, XHTML). XML является упрощённым подмножеством языка SGML.
Применяется для создания словарей других языков.
В Oracle определен тип данных XMLType для естественного оперирования документами XML в базе данных. Он обладает следующими возможностями:
- позволяет представлять в базе данных документы XML;
- имеет встроенные конструкторы и методы для работы с содержимым документов XML, например, можно создавать значения типа XMLType, извлекать и индексировать значения XML;
- может использоваться как тип данных столбца, таблицы или представления.
Конструктор XMLType применяется для создания объектов типа XMLTYPE (например, конструктору можно передать строку в качестве параметра, и на основании этой строки будет создан xml-документ).
Для создания XML-объектов в используются функции XMLELEMENT (создание тега), XMLATRIBUTE (создание атрибутов тега) и XMLAGG (агрегирование тегов при выборке нескольких строк) (основные).
Дата добавления: 2015-11-16; просмотров: 51 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Конструкция CURRENT OF применяется для обращения к последней просмотренной в курсоре строке с целью ее изменения или удаления из таблицы. | | | EXTRACTVALUE. |