Записи и коллекции в PL/SQL, страница 2

§  Невозможно сравнить две записи единственной операцией

§  Только в Oracle9iRelease 2 появилась возможность добавлять новые записи в таблицу БД целиком

1.2.2. Операции над отдельными полями записи

 [имя_схемы.][имя_пакета.]имя_записи.имя_поля

DECLARE

newCm NUMBER;

BEGIN

FOR v_sal IN (select * from sal) LOOP

newCm:= v_sa.comm * 1.15;

DBMS_OUTPUT.PUT_LINE(v_sa.sname||’   ’|| newCm);

ENDLOOP;

END;

1.3. Сравнение записей

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

IF (rStSal.city= rMySal.city OR

(rStSal.cityISNULLAND rMySal.city IS NULL)  )

  AND (rStSal.comm= rMySal.comm. OR

    (rStSal.comm. IS NULL  AND rMySal.comm IS NULL)  ) . . . THEN


2. Коллекции в PL/SQL

Коллекция – это структура данных, имеющая составной тип и предназначенная для хранения одномерных массивов. Коллекции используются для хранения множества однотипных элементов в коде PL/SQL или в столбцах таблиц базы данных.

§  Эмуляция двунаправленных курсоров и курсоров с произвольным доступом

§  Хранение списков подчиненной информации непосредственно в столбцах таблицы – в виде вложенной таблицы или массива VARRAY

§  Кэширование статичной информации базы данных, которая часто указывается в запросах

2.1. Типы коллекций и объявление

Oracle9i поддерживает три типа коллекций.

§  Ассоциативные массивы. Это одномерные неограниченные разреженные коллекции, которые используются только в PL/SQL.

§  Вложенные таблицы. Коллекции, которые первоначально заполняются полностью, но вследствие последующего удаления элементов могут стать разреженными. Используются и в PL/SQL, и в базах данных.

§  Массивы VARRAY. Коллекции, размер которых всегда ограничены, и они не могут быть разреженными. Используются и в PL/SQL, и в базах данных.

Коллекции называются ограниченными, если заранее определены границы возможных значений индексов ее элементов.

Для неограниченных коллекций верхняя или нижняя границы номеров элементов не указываются. Для ассоциативных массивов индексы изменяются от -231+1 до 231-1. Для вложенных таблиц индексы изменяются от 1 до 231-1.

Плотными коллекциями называются такие, все элементы которых определены, и каждому элементу присвоено некоторое значение (или NULL).

Коллекция разреженная, если отдельные ее элементы отсутствуют.

Коллекции всех типов индексируются целочисленными значениями.

В Oracle9iRelease 2 появилась дополнительная возможность индексации ассоциативных массивов – индексация строками.

§  с использование  команды CREATETYPE. Так определяется тип вложенной таблицы и тип массива VARRAY в базе данных. Это позволяет использовать объявленный тип при определении столбцов таблицы БД, переменных в программах PL/SQL, а также атрибутов объектных типов

§  с применением синтаксиса TYPE . . . IS. Этот способ используется при определении типа коллекции в программе PL/SQL