DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Типы данных для сети Интернет

В версии Oracle9i Database появилась встроенная поддержка различных связанных с Интернетом типов данных и технологий, в частности XML (Extensible Markup Language - расширяемый язык разметки) и URI (Universal Resource Identifiers - универсальные идентификаторы ресурсов). Oracle поддерживает типы данных, используемые для работы с данными XML и URI, а также специальный класс DBUri-REF, который применяется для доступа к данным, хранящимся внутри самой базы данных. Oracle также предоставляет новый набор типов для хранения внешних и внутренних URI и доступа к ним из базы данных.
Тип XMLType позволяет хранить в базе данных данные XML и обращаться к ним с запросами при помощи таких функций, как SYS_XMLGEN, и пакета DBMS_XMLGEN. Он также позволяет использовать операторы языка SQL для выполнения поиска при помощи языка XPath.
Связанные с URI типы данных, такие как URIType и HttpURIType, входят в иерархию объектных типов. Они могут использоваться для хранения URL-адресов внешних веб-страниц и файлов, а также для ссылок на данные, хранящиеся внутри базы данных.
Типы данных «Any»
Обычно перед программистом стоит вполне конкретная задача с жестко заданными требованиями. Но случается и так, что необходимо написать нечто общее, для широкого применения. В таких случаях удобно использовать типы данных «Any».
Типы «Any» появились в версии Oracle9/ Database Release 1. Они значительно отличаются от любых других типов данных, доступных в Oracle. Эти типы позволяют динамически инкапсулировать описания типов, экземпляры данных и наборы экземпляров данных любого другого типа SQL, а также обращаться к таким объектам. Вы можете использовать эти типы (и методы, определенные для них как для объектных типов), например для определения типа данных, хранящихся в некоторой вложенной таблице, без обращения к реальному объявлению типа данной таблицы.
Группа типов данных «Any» включает в себя AnyType, AnyData и Any- DataSet.
Объявление программных данных
Как уже говорилось, прежде чем обращаться к переменной или константе, необходимо ее объявить (единственным исключением из этого правила являются индексные переменные циклов FOR.) Все объявления должны быть сделаны в разделе объявлений анонимного блока,
процедуры, функции, триггера, тела пакета или тела объектного типа. В PL/SQL вы можете объявить множество типов данных и структур данных, включая переменные, константы, пользовательские типы TYPE (например, для коллекции или записи) и исключения. В этом разделе будет рассказано об объявлении переменных и констант.
Объявление переменных
При объявлении переменной PL/SQL выделяет память для значения переменной и присваивает этому хранилищу имя, используя которое вы сможете извлекать и изменять данное значение. В объявлении также указывается тип данных переменной, который будет использован для проверки корректности значений, присваиваемых переменной.
Для задания значения по умолчанию ключевое слово DEFAULT и оператор присваивания эквиваленты и взаимозаменяемы. Что же следует
Для объявления используется следующая синтаксическая конструкция:

где имя - это имя объявляемой переменной или константы, а тип_данных - это тип или подтип значений, которые могут присваиваться этой переменной. Включение в объявление выражения NOT NULL означает, что если в коде будет предпринята попытка присвоения вашей переменной значения NULL, то Oracle инициирует исключение. Выражение [значение по умолчанию] позволяет инициализировать переменную; оно необязательно для всех объявлений, кроме объявлений констант.
Рассмотрим пример объявления переменных различных типов данных:
использовать? Я предпочитаю использовать оператор присваивания (:=) для указания значений по умолчанию для констант, а ключевое слово DEFAULT - для переменных. Для констант присваиваемое значение в действительности является не значением по умолчанию, а исходным (и неизменным) значением, поэтому использование DEFAULT кажется мне неуместным.
Объявление констант
Существует всего два отличия в объявлениях переменных и констант: объявление константы включает в себя ключевое слово CONSTANT, и в нем обязательно указывается значение по умолчанию (которое на самом деле является не значением по умолчанию, а единственно возможным значением). Синтаксис объявления константы будет таким:

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

Если не указано иное, то информация, приводимая в последующих разделах главы для переменных, справедлива и для констант.
Объявления с привязкой
Привязка типа данных означает, что вы указываете компилятору PL/ SQL на необходимость назначения типа данных переменной на основе типа данных уже определенной структуры данных: другой переменной PL/SQL, предопределенного типа или подтипа, таблицы базы данных или какого-то столбца таблицы. PL/SQL поддерживает две разновидности привязки:
Скалярная привязка
Используйте атрибут %TYPE для определения переменной на основе столбца таблицы или какой-то другой скалярной переменной PL/ SQL.
Привязка к записи
Используйте атрибут %ROWTYPE для определения записи на основе таблицы или предопределенного явного курсора PL/SQL.
Синтаксис объявления типа данных с привязкой будет таким:

где имя_переменной - это имя объявляемой переменной, а атрибут - это имя объявленной ранее переменной PL/SQL или же указание столбца таблицы в формате «таблица.столбец».
Теперь рассмотрим пример привязки записи к курсору:
Приведем пример привязки переменной к столбцу таблицы базы данных:
Ссылка на привязку вычисляется при компиляции, что не увеличивает времени выполнения программы. Привязка устанавливает зависимость между кодом и элементом, к которому выполняется привязка (таблицей, курсором или пакетом, содержащим переменную, на которую ссылается объявление типа). При изменении такого элемента привязанный к нему код помечается как INVALID. При повторной компиляции привязка будет восстановлена, так что код всегда будет соответствовать текущему состоянию элемента.
 









jAntivirus