Введение в СУБД "Oracle". Космачев В.М - 64 стр.

UptoLike

ГУАП МЦИТ
Введение в «ORACLE»
Под ред. проф. В.М.Космачёва
64
Coeff CONSTANT NUMBER:=0.5;
BEGIN
INSERT INTO SUBJLECT VALUES(Coeff*Argl, Coeff*Arg2);
END;
/
Исполнение созданной процедуры INSREC может быть выполнено оператором EXEC языка PL/SQL. Последующая
выборка из таблицы SUBJLECT иллюстрирует изменения в базе данных, осуществленные вызовом процедуры InsRec
.
SQL> EXEC InsRec (240,120);
Чтобы уточнить выявленные в процессе синтаксического анализа ошибки, можно воспользоваться командой PL/SQL
SHOW ERRORS. Эта команда показывает ошибки, обнаруженные в процессе выполнения CREATE PROCEDURE,
CREATE FUNCTION, CREATE PACKAGE, CREATE PACKAGE BODY, CREATE TRIGGER. Если команда
SHOW ERRORS используется без параметров, то возвращаются ошибки последней компилированной процедуры,
функции, пакета, тела пакета или триггера.
Рассмотрим пример обнаружения и исправления ошибки. В процедуре, представленной выше, добавим ошибочный
оператор, изменяющий значение параметра вида IN, который не должен изменяться.
Пример 2.3.26
SQL>CREATE OR REPLACE PROCEDURE InsRec (Argl IN NUMBER, Arg2 IN NUMBER) IS
2 Coeff CONSTANT NUMBER:=0.5;
3 BEGIN
4 Argl:=Argl+200; -- ОШИБКА
5 NSERT INTO SUBJLECT VALUES(Coeff*Argl, Coeff*Arg2);
6 END;
Протокол выполнения:
SQL>SHOW ERRORS
Errors for PROCEDURE InsRec:
LINE/COL ERROR
4/1 PLS-00363: expression 'Arg1’ cannot be used as an assignment target
4/1 PL/SQL: Statement ignored
Напомним, что функции PL/SQL отличаются от процедур тем, что возвращают в вызывающую среду результат.
Оператор определения функции ORACLE использует следующий синтаксис:
CREATE [OR REPLACE] FUNCTION [схема.]имя_функции
[ (имя_параметра[{IN | OUT | IN OUT}] тип_данных
[, имя_параметра[{IN | OUT | IN OUT}] тип_данных...])]
RETURN тип_данных
{IS | AS}
Описание типа данных для возвращаемого функцией значения требуется обязательно. При описании переменных
функции так же, как и при описании переменных процедуры, не используется ключевое слово DECLARE. Блок
определения данных начинается сразу после ключевого слова IS (или AS, по выбору пользователя).
Рассмотрим пример создания функции, которая вычисляет сумму значений атрибутов, таких, что один из атрибутов
попадает в заданный параметрами функции интервал. Пусть таблица сформирована предложением как, в примере
2.3.25.