2.1.1. Объявление ассоциативных массивов
TYPE имя_типа_таблицы IS TABLE OF тип_данных [NOT NULL]
INDEX BY [BINARY_INTEGER | подтип_тип BINARY_INTEGER | VARCHAR2(размер)];
§ скалярный тип данных – любой поддерживаемый PL/SQL скалярный тип
§ тип данных с привязкой – определяется ранее объявленной переменной или курсором
TYPE t_ord IS TABLE OF ord %ROWTYPE
INDEX BY VARCHAR2(20);
TYPE t_sal_nm IS TABLE OF sal.sname%TYPE NOT NULL
INDEX BY BINARY_INTEGER;
До Oracle9iRelease 2
INDEX BY BINARY_INTEGER
Теперь появились дополнительные возможности:
INDEX BY PLS_INTEGER
INDEX BY NATURAL
INDEX BY POSITIVE
INDEX BY VARCHAR2(размер)
INDEX BY таблица.столбец%TYPE
INDEXBY пакет.переменная%TYPE
INDEXBY подтип
имя_коллекции табличный_тип;
CREATE OR REPLACE PACKAGE sal_pkg IS
TYPE t_sal_nm IS TABLE OF sal.sname%TYPE NOT NULL
INDEX BY BINARY_INTEGER;
t_salNm t_sal_nm;
END sal_pkg;
2.1.2. Объявление вложенной таблицы или массива VARRAY
Синтаксис задания в базе данных:
CREATE [OR REPLACE] TYPE имя_типа AS | IS
TABLE OF тип_данных_элемента [NOT NULL];
CREATE [OR REPLACE] TYPE имя_типа AS | IS
VARRAY (максимальный_индекс) OFтип_данных_элемента [NOTNULL];
Для задания типов в программе PL/SQL
TYPE имя_типа IS TABLE OF тип_данных_элемента [NOT NULL];
TYPEимя_типаISVARRAY (максимальный_индекс)
OFтип_данных_элемента [NOTNULL];
CREATE TYPE Sal_city_t AS TABLE OF VARCHAR2(30);
DECLARE
TYPE Number_t IS ARRAY(5) OF NUMBER;
my_city Sal_city_t ;
my_number Number_t := Number_t(7,19);
. . .
END;
2.2. Использование коллекций
2.2.1. Коллекция как компонент записи
TYPE Number_r IS RECORD (
Id_rec NUMBER(4),
my_number Number_t );
. . .
END;
2.2.2. Коллекция как параметр программы
CREATE PROCEDURE show_color1(p_Color IN Color_t) IS
tCol Color_t := p_Color;
BEGIN
IF (tCol.count>0 AND tCol.exists(1)) THEN
DBMS_OUTPUT.PUT_LINE(‘Color(1) is ’|| tCol(1));
END IF;
END;
2.2.3. Коллекция как тип данных, возвращаемый функцией
CREATE or replace FUNCTION get_ch RETURN Ch_Name_t IS
tChName Ch_Name_t;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.