Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СУБД Oracle / Лекции / Лек_ORAC / LA / Создание пакетов.doc
Скачиваний:
45
Добавлен:
16.04.2013
Размер:
173.57 Кб
Скачать

V_proc_name || ‘ end;’;

V_cursor integer;

V_return integer;

BEGIN

v_cursor := DBMS_SQL.OPEN_CURSOR;

DBMS_SQL.PARSE(v_cursor, v_sql_statement,

DBMS_SQL.NATIVE);

v_return := DBMS_SQL.EXECUTE(v_cursor);

DBMS_SQL.CLOSE_CURSOR(v_cursor);

END exec_procedure;

Теперь, если была посылка сообщения по программному каналу:

SQL> EXECUTE send_message('Testing dynamic SQL');

То можно использовать динамический SQLдля выполнения процедуры приёма сообщения:

SQL> EXECUTE exec_procedure('receive_message');

Testing dynamic SQL

Функции пакета DBMS_SQL

Процедура или функция

Описание

OPEN_CURSOR

Открывает новый курсор и возвращает идентификатор (ID) курсора.

PARSE

Производит разбор команд DDLилиDML: проверяет его синтаксис и связывает с открытым курсором. ОператорыDDLвыполняются сразу после анализа.

BIND_VARIABLE

Связывает заданное значение с переменной, имя которой содержится в разобранном операторе в заданном курсоре.

DEFINE_COLUMN

Определяет поля, выбираемые из курсора, их позицию и размерность (только для команды SELECT).

EXECUTE

Выполняет SQL-команду и возвращает количество обработанных строк.

FETCH_ROWS

Извлекает строку из заданного курсора. Если строк больше одной, функция вызывается в цикле.

EXECUTE_AND_FETCH

Выполняет команду EXECUTEи извлекает строку для заданного курсора. Эта функция более эффективна, чем командыEXECUTEиFETCHдля одной итерации.

COLUMN_VALUE

Возвращает значение поля в заданной позиции заданного курсора (допустимые типы данных - NUMBER,DATE,VARCHAR2иMLSLABEL). Используется для доступа к данным, выбранным с помощью функцииFETCH_ROWS.

COLUMN_VALUE_CHAR

COLUMN_VALUE_RAW

COLUMN_VALUE_ROWID

Возвращает такую же информацию для CHAR, дляRAWили дляROWID

VARIABLE_VALUE

Возвращает значение названной переменной для заданного курсора (допустимые типы данных - NUMBER,DATE,VARCHAR2иMLSLABEL). Используется для выборки зна­чений, присваиваемых выходным переменным процедур PL/SQL, когда они выполняются.

VARIABLE_VALUE_CHAR

VARIABLE_VALUE_RAW

VARIABLE_VALUE_ROWID

Возвращает такую же информацию для CHAR

Возвращает такую же информацию для RAW

Возвращает такую же информацию для ROWID

IS_OPEN

Проверяет, открыт ли заданный курсор.

CLOSE_CURSOR

Закрывает заданный курсор.

Функции обнаружения ошибок

LAST_ERROR_POSITION

Возвращает символьную позицию, в которой обнаружена ошибка, в виде смещения в байтах от начала текста оператора SQL (0 -это первый символ).

LAST_ROW_COUNT

Возвращает нарастающий счетчик выбранных строк.

LAST_ROWID

Возвращает адрес (ROWID) последней выбранной строки.

LAST_SQL_FUNCTION_CODE

Возвращает код функции SQL для команды. Эта функция должны быть выполнена сразу же после команды SQL. В противном случае значение, возвращенное функцией, будет некорректным.

Пример: SQL-команда хранится в виде символьной строки и анализируется с помощьюDBMS_SQL.

CREATE OR REPLACE PROCEDURE exec_select

(p_table_name IN VARCHAR2,

p_column_name IN VARCHAR2,

p_column_value IN VARCHAR2,

p_name OUT VARCHAR2,

p_salary OUT NUMBER)

IS

mycursor INTEGER;

myretun INTEGER;

-- Локальные переменные

Соседние файлы в папке LA