Лекция: start Имя_файла_процедуры

Если вы что-то ввели неправильно, у вас могут возникнуть ошибки компиляции. К сожалению, SQL*Plus не покажет вам эти ошибки автома тически, а выдаст сообщение «Warning: Procedure created with compilation errors „(Предупреждение: При компиляции процедуры обнаружены ошиб ки). Чтобы увидеть ошибки, введите команду:

Show errors;

Если синтаксических ошибок не было, вы получите сообщение “Procedure created „(Процедура создана). Теперь вы можете вызвать эту процедуру с помощью команды EXECUTE или EXEC:

Exec Customer_Insert('Michael Bench', '203', '555-2014', 'US');

Если возникнут ошибки на этапе выполнения процедуры, номера строк в отчете об ошибках не будут совпадать с номерами строк, которые вы можете видеть в своем текстовом редакторе.

 

 

Развитые типы данных Oracle (массив, таблица, объект)

· Массив varray представляет собой коллекцию объектов определённого типа.

SQL> create type

Tax_tp as object(

Year Date

Tax number);

SQL>create type

My_arr as array(3) of Tax_tp;

Объявление массива:

DECLARE

TYPE t_ar IS VARRAY(250) OF VARCHAR(100);

V1 t_ar;

i NUMBER :=0

BEGIN

LOOP

IF (i >= 100) THEN

EXIT;

END IF;

V1(i):=TO CHAR(i);

END LOOP;

END

Типовая заготовка (структура) ХП oracle может быть представлена определённым образом:

Create or replace procedure

имя_процедуры

Is

Declare

…объявление переменных и типов…

Begin

… исполнительный порядок…

Exception

…Обработка исключения…

End имя_процедуры

· Таблицы:

Тип таблиц ближе к массивам, но отличие в том, что каждый элемент таблицы имеет индекс, например, V(-15):=’Mir’. Количество элементов не фиксировано, объявление таблицы:

DECLARE

TYPE t_tab IS TABLE OF VARCHAR(10)

INDEX BY BINARY_INTEGER;

V1 t_tab

BEGIN

V1(-4) = ‘John’

V1(0) = ‘Doe’;

END;

В отличии от массива, в таблице индексы не обязаны последовательно возрастать. Пример с заполнением таблицы:

DECLARE

TYPE t_tab IS TABLE OF Stud %TYPE

INDEX BY BINARY INTEGER;

V1.t_tab

BEGIN

SELECT * INTO V1(-2)

FROM stud

WHERE Id = -2

END;

В таблице и массиве есть ряд доступных свойств: COUNT, FIRST, LAST, NEXT, DELETE(10) (удаление строки с индексом 10), DELETE(10,200) (удаление записи из диапазона от 10 до 200). Пример:

DECLARE

TYPE t_tab IS TABLE OF stud.FN%TYPE

INDEX BY BINARY_INTEGER;

FNAMES t_tab;

BEGIN

FNAMES(1):=’John’;

FNAMES(3):=’Doe’;

IF FNAMES.EXISTS(1) THEN FNAMES.DELETE(1)

END IF;

END

· Курсоры:

Declare

Cursor ordc is

Select * from Orders;

Cursor get_Orditem(prom_num orders.ord_num % type) is

Select quantity

From orders where ord_num = prod.num;

Пример работы с курсорами:

DECLARE

V_stud students.IO%TYPE;

V_FirstName students.FirstName%TYPE;

V_Depart students.Department%TYPE:=”Computer Science”;

CURSOR c_Students IS

SELECT id, FirstName

FROM students

WHERE Department=V_Depart

Begin

Open c_Students;

LOOP

FETCH c_Students INTO V_stud, v_FirstName

EXIT WHEN

C_Students% NOT FOUND;

END LOOP

CLOSE c_Students;

END;

Пример с курсорными переменными:

DECLARE

TYPE L_classes IS REF CURSOR

Return classes%ROWTYPE

V_c1 c_Classes;

Open v_c1 FOR

SELECT * FROM Classes;

REF – ссылка на курсор; V_c1 – курсорная переменная.

Пример с функцией:

CREATE OR REPLACE FUNCTION MyFun (x IN BOOLEN)

RETURN VARCHAR2

IS

DECLARE

Str VARCHAR(5);

Begin

IF (x) THEN

Str:=”TRUE”;

ELSE

Str:=”FALSE”;

ENDIF

RETURN(Str);

END MyFun

Также имеется большое количество встроенных функций, таких как CHR(x) (возврат символа в формате ASCII), CONCAT(s1,s2) (Объединение строк), SUBSTR(s,n1,n2) (выделение в строке S n2 символов начиная с n1) и так далее.

еще рефераты
Еще работы по информатике