----------------------------------------------------------------



                                   ЧАСТЬ III


                                  ПРИЛОЖЕНИЯ


ПРИЛОЖЕНИЕ A

        ----------------------------------------------------------------

        НОВЫЕ ВОЗМОЖНОСТИ В ВЕРСИИ 2


        В этом приложении выделены новые возможности PL/SQL, которые
        предоставляются версией 2. Эти возможности рассчитаны на то,
        чтобы помочь вам извлекать из PL/SQL максимум эффективности,
        скорости и гибкости.




















































                                       Новые возможности в версии 2  A-1


----------------

Подпрограммы (глава 6)

        PL/SQL   имеет   два   типа   подпрограмм,   которые  называются
        процедурами и  функциями.  Подпрограммы  способствуют разработке
        приложений за счет изолирования операций.  Процедуры и функции -
        это поименованные  блоки PL/SQL,  которые принимают  параметры и
        могут   быть   вызваны   с   возвратом.    Обычно   подпрограммы
        используются для выполнения действия, а функции - для вычисления
        значения.

        Подпрограмма, явно  создаваемая (CREATE)  с помощью  инструмента
        ORACLE, называется хранимой подпрограммой.  Такая  подпрограмма,
        один раз откомпилированная и сохраненная в базе данных, является
        объектом базы данных, и к ней могут обращаться любые приложения,
        соединенные с этой базой данных.

        Процедуры  и   функции  предоставляют   расширяемость,  позволяя
        привязывать  средства  PL/SQL  к  вашим потребностям.  Они также
        спосоствуют  надежности,  сопровождаемости  и производительности
        ваших приложений.


----------------

Пакеты (глава 7)

        PL/SQL   поддерживает   скрытие   информации,   модульность    и
        многократную      используемость,      позволяя     группировать
        взаимосвязанные  типы,  объекты  и  подпрограммы PL/SQL в единый
        пакет.  Например, пакет может содержать коллекцию процедур,  или
        набор определений  типов и  объявлений переменных.   Приложениям
        видны и  доступны лишь  те объявления,  которые сосредоточены  в
        спецификации пакета.  Детали реализации  в теле пакета скрыты  и
        недоступны.

        Однажды  написанный,  пакет  компилируется  и сохраняется в базе
        данных,  где  его  содержимое  может  совместно   использоваться
        многими   приложениями.    Когда   вы   вызываете пакетированную
        подпрограмму  первый  раз,  в  память  загружается  весь  пакет.
        Поэтому последующие обращения  к другим подпрограммам  пакета не
        требуют операций дискового  ввода-вывода.  Тем самым,  пакеты не
        только  ускоряют  продуктивность   разработки,  но  и   улучшают
        производительность.


















A-2  Руководство пользователя и справочник по PL/SQL


----------------

Новые предопределенные типы данных (глава 2)

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

Базовые типы
------------

        PL/SQL    предоставляет    несколько    новых    базовых  типов:
        BINARY_INTEGER,  VARCHAR2,  RAW,  LONG  RAW,  ROWID  и MLSLABEL.
        Однако  последний  доступен  лишь  в Trusted ORACLE, специальной
        защищенной версии ORACLE.

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

        Тип данных VARCHAR2 используется для хранения символьных  данных
        переменной длины.  Максимальная  длина переменной типа  VARCHAR2
        составляет   32767   байт.    Вы   можете   присваивать значения
        переменным VARCHAR2,  передавать их  символьным функциям,  таким
        как LENGTH и SUBSTR, и манипулировать ими, используя предложения
        SELECT, INSERT, UPDATE и DELETE.

        Тип данных  RAW используется  для хранения  двоичных данных  или
        байтовых  строк.   Например,  переменная  RAW  может   содержать
        последовательность   графических   символов   или   оцифрованную
        картинку.   PL/SQL  не  интерпретирует  данных RAW. Максимальная
        длина переменной RAW составляет 32767 байт.

        Тип данных  LONG RAW  также используется  для хранения  двоичных
        данных или байтовых  строк.  Максимальная длина  переменной LONG
        RAW составляет  32760 байт.   Данные LONG  RAW аналогичны данным
        LONG, с той разницей,  что PL/SQL не интерпретирует  данных LONG
        RAW.

        Внутренне,   каждая   таблица   в   базе   данных   ORACLE имеет
        псевдостолбец  ROWID,  в  котором  хранятся  двоичные  значения,
        называемые   идентификаторами   строк.    Идентификатор   строки
        предоставляет самый быстрый способ доступа к конкретной  строке.
        PL/SQL предоставляет  специальный тип  данных, также  называемый
        ROWID.   Вы  используете  переменные  типа  ROWID  для  хранения
        идентификаторов  строк  в  читабельном  формате.  Более того, вы
        можете  манипулировать  значениями   ROWID  с  помощью   функций
        CHARTOROWID и ROWIDTOCHAR.

        В  Trusted  ORACLE,  вы  используете  тип  данных  MLSLABEL  для
        хранения меток операционной системы.  Trusted ORACLE  использует
        такие  метки  для  управления  доступом  к  данным.   Для  более
        подробной  информации  обратитесь  к  документу  Trusted ORACLE7
        Server Administrator's Guide.





                                       Новые возможности в версии 2  A-3


Подтипы
-------

        Подтип  ассоциирует  базовый  тип  с  ограничением,  и тем самым
        определяет подмножество  значений базового  типа.  Для  удобства
        PL/SQL  предоставляет   следующие  числовые   подтипы:  NATURAL,
        POSITIVE, DEC, DECIMAL,  DOUBLE PRECISION, FLOAT,  INT, INTEGER,
        NUMERIC, REAL и SMALLINT.  Первые два являются подтипами  BINARY
        INTEGER; остальные - подтипами NUMBER.

        Вы можете использовать подтипы NATURAL или POSITIVE, если хотите
        ограничить  переменную  неотрицательными  целыми значениями.  Вы
        можете  использовать  подтипы  DEC,  DECIMAL,  DOUBLE PRECISION,
        FLOAT, INT, INTEGER, NUMERIC, REAL и SMALLINT для  совместимости
        с  типами  данных  ANSI/ISO,  IBM  SQL/DS  и  IBM  DB2, или если
        предпочитаете более описательный идентификатор, нежели NUMBER.

----------------

Таблицы PL/SQL (глава 2)

        PL/SQL предоставляет два составных типа данных: TABLE и  RECORD.
        Этот  раздел  обсуждает  тип  данных  TABLE;  тип  данных RECORD
        рассматривается ниже.

        Объекты  типа  TABLE  называются  таблицами PL/SQL.  Эти таблицы
        моделируют  таблицы  базы  данных  (но  не  являются  таковыми).
        Таблицы PL/SQL используют первичный ключ, чтобы предоставить вам
        доступ к строкам по аналогии с массивом.

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

        Таблица PL/SQL может иметь  один столбец и один  первичный ключ,
        оба   непоименованные.    Столбец   может   принадлежать  любому
        скалярному  типу,  но  первичный  ключ  должен принадлежать типу
        BINARY_INTEGER.  В будущих версиях PL/SQL таблицы PL/SQL  смогут
        иметь  несколько  поименованных  столбцов  и составные первичные
        ключи любого типа.  Как  и скалярные переменные, таблицы  PL/SQL
        могут объявляться как формальные параметры процедур и функций.





















A-4  Руководство пользователя и справочник по PL/SQL


----------------

Поддержка хост-массивов (глава 8)

        В  среде  прекомпилятора  ORACLE  можно передавать во встроенный
        блок PL/SQL входные хост-массивы и индикаторные массивы.  Как  и
        локально   объявленную   таблицу   PL/SQL,   хост-массив   можно
        индексировать   переменной   PL/SQL   типа   BINARY_INTEGER, или
        хост-переменной,  совместимой  с  этим  типом.   Обычно в PL/SQL
        передается  весь  хост-массив.   Однако  вы  можете использовать
        предложение  ARRAYLEN,  чтобы  специфицировать  меньший   размер
        массива.  Кроме  того, вы  можете использовать  вызов процедуры,
        чтобы  заставить  PL/SQL  присвоить  все  значения  хост-массива
        строкам таблицы PL/SQL.

----------------

Пользовательские записи (глава 2)

        В PL/SQL версии 1 вы могли использовать атрибут %ROWTYPE,  чтобы
        объявить запись, которая будет представлять строку таблицы  базы
        данных или  строку, извлекаемую  курсором.  Однако  вы не  могли
        специфицировать типы полей в  такой записи, или определить  свои
        собственные  поля.   PL/SQL  версии  2  снимает эти ограничения,
        предоставляя составной тип данных RECORD.

        Объекты типа  RECORD называются  записями.  В  отличие от таблиц
        PL/SQL, записи имеют уникально поименованные поля, которые могут
        принадлежать    различным    типам    данных.     Более    того,
        пользовательские   записи   могут   объявляться   как формальные
        параметры  процедур  и  функций.   PL/SQL  даже  позволяет   вам
        объявлять  и  ссылаться  на  вложенные  записи.   Иными словами,
        запись может быть компонентой другой записи.

----------------

Новые встроенные функции (глава 2)

        PL/SQL предоставляет несколько новых встроенных функций.

Трансцендентные функции
-----------------------

        Трансцендентные     функции     включают     тригонометрические,
        логарифмические и экспоненциальные функции.   Тригонометрические
        функции  подразделяются   на  обычные   (SIN,  COS   и  TAN)   и
        гиперболические   (SINH,   COSH   и   TANH).    Например, COS(n)
        возвращает косинус угла n, выраженного в радианах.

        Логарифмическая  функция  LN(n)  возвращает натуральный логарифм
        числа n, где n  больше 0.  Функция LOG(m,n)  возвращает логарифм
        по основанию m числа n, где m больше 1, а n больше 0.

        Экспоненциальная функция EXP(n) возвращает число e,  возведенное
        в степень n, где  e (приблизительно 2.71728) выражает  основание
        натуральных логарифмов.







                                       Новые возможности в версии 2  A-5


Функции преобразования
----------------------

        Функции  преобразования  конвертируют  значение  из  одного типа
        данных  в  другой.   В  этой  группе  новыми  функциями являются
        CHARTOROWID,   ROWIDTOCHAR,   HEXTORAW,   RAWTOHEX   и TO_LABEL.
        Например, CHARTOROWID  преобразует символьное  значение из  типа
        CHAR или VARCHAR2 в тип ROWID.


----------------

Полная поддержка операций SQL (глава 4)

        PL/SQL поддерживает  теперь все  операции сравнения,  множеств и
        строк, присущие SQL.

Операторы сравнения
-------------------

        Операторы сравнения  в фразе  WHERE сравнивают  одно выражение с
        другим и всегда возвращают TRUE, FALSE или NULL.  Помимо  прочих
        операторов сравнения, PL/SQL  поддерживает операторы ANY  (и его
        синоним SOME), ALL и EXISTS.  Например, EXISTS Возвращает  TRUE,
        если подзапрос возвращает хотя бы одну строку.

Операторы множеств
------------------

        Операторы множеств комбинируют  результаты двух запросов  в один
        результат.   PL/SQL  поддерживает  операторы  INTERSECT,  MINUS,
        UNION и UNION ALL. Например, UNION возвращает все  различающиеся
        строки, возвращенные любым из запросов.

Операторы строк
---------------

        Операторы строк  возвращают конкретные  строки или  обращаются к
        ним.   PL/SQL  поддерживает  операторы  ALL,  DISTINCT  и PRIOR.
        Например, DISTINCT устраняет  повторяющиеся строки в  результате
        запроса или в агрегатном выражении.


----------------

Удаленный доступ (главы 4, 6 и 7)

        PL/SQL позволяет  вам обращаться  к удаленным  базм данных.   Вы
        даже  можете  вызывать  подпрограммы  и  обращаться  к  пакетам,
        хранящимся   в   удаленных   базах   данных.    Чтобы обеспечить
        прозрачность адресации объектов удаленных баз данных, вы  можете
        интерактивно, в SQL*Plus или SQL*DBA, создать синонимы для таких
        объектов.










A-6  Руководство пользователя и справочник по PL/SQL


----------------

Поддержка советов оптимизатору (глава 4)

        Для каждого предложения  SQL оптимизатор ORACLE  генерирует план
        исполнения,  представляющий  собой  ряд  шагов,  которые  ORACLE
        предпринимает   для   выполнения   этого   предложения.   PL/SQL
        позволяет  вам  предлагать  ORACLE  нужный  способ   оптимизации
        предложения SQL. Эти рекомендации, называемые советами  (hints),
        позволяют вам влиять на решения, принимаемые оптимизатором.


----------------

Поддержка национальных языков (глава 4)

        ORACLE  предоставляет   поддержку  национальных   языков  (NLS),
        которая позволяет  вам использовать  как 7-  и 8-битовые,  так и
        16-битовые   наборы   символов.    Более   того,   это  средство
        автоматически преобразовывает данные из одного набора символов в
        другой.   PL/SQL  полностью   поддерживает  средство  NLS,   что
        позволяет  вашим  приложениям  выполняться  в различных языковых
        окружениях.


----------------

Новое ключевое слово DEFAULT (глава 2)

        Любые переменные  PL/SQL, параметры  или поля  записи могут быть
        инициализированы  в  своих  объявлениях.   В   действительности,
        константа  ДОЛЖНА  быть  инициализирована  в  своем  объявлении.
        PL/SQL  позволяет  вместо  оператора  присваивания  использовать
        ключевое слово DEFAULT для инициализации констант, переменных  и
        полей.    Слово   DEFAULT   предпочтительнее,   когда   значение
        переменной или поля больше не будет изменяться.