SQL*Loader, которая позволяет помещать строки в таблицы без использования предложений INSERT. Однако такие средства можно, скорее, отнести к исключениям, и в последних версиях продуктов этих исключений очень немного. Вместо этого Oracle вводит новый синтаксис в предложения языка SQL. Например, следующий полезный оператор
ALTER SESSION ADVISE ROLLBACK;
помещает комментарии в представления DBA_2PC_PENDING на удаленных узлах, если сеанс приводит к появлению "сомневающейся" (in-doubt) транзакции на удаленном узле. Это, безусловно, полезно, но не то, что могло бы заинтриговать среднего пользователя или программиста в первый день его занятий по реляционным базам данных. Кроме того, этот оператор не может быть использован в других СУБД.
Поддержка объектов в OracleS реализована по-другому. Здесь имеется ряд операций, которые нельзя надлежащим образом выполнить с помощью одного лишь SQL. Существуют также механизмы, например кэш на стороне клиента, которые реализуются полностью вне среды SQL и используют системные вызовы библиотек Oracle, доступные только в среде С и C++. Другими словами, если вы хотите воспользоваться всеми имеющимися средствами объектной поддержки Oracle, то в качестве языка реализации необходимо выбрать С или C++. И никакой другой! Нельзя даже воспользоваться "хитом сезона" — языком Java (по крайней мере, пока).
Если вам неплохо живется и без преимуществ, которые дает кэш на стороне клиента, то у вас для выбора будет еще несколько вариантов. Однако следует отметить, что даже поддержка объектов, обеспечиваемая на уровне SQL, требует использования синтаксиса, который не "понимает" большинство инструментальных средств, предлагаемых на рынке. Этот синтаксис поддерживается PL/SQL последней версии — PL/SQL8. По нашим прогнозам, для проектов, в которых требуется умеренно использовать объектные возможности OracleS, придется инкапсулировать большую часть объектных операций внутри серверных пакетов PL/SQL. Это единственный способ избежать использования синтаксиса SQL, который не поддерживается инструментальными средствами на стороне клиента.
Однако не теряем ли мы точки опоры? Ведь уже существует ряд очень удачных объектно-ориентированных инструментов, которые работают с незапамятных времен и не требуют услуг реляционной базы данных — и в некоторых случаях безо всякого формального подхода к проблеме хранения объектов на внешних носителях. Посмотрим, захотят ли пользователи и поставщики этих средств использовать систему типов данных OracleS для моделирования собственных структур данных и можно ли будет вообще моделировать эти структуры данных в системе типов OracleS.
Мы уже отмечали, что для применения объектных средств OracleS нужен либо PL/SQL, либо C/C++. Если используется PL/SQL, то компилятор PL/SQL имеет доступ к определенным в текущей схеме типам и может получить всю необходимую информацию из словаря данных.
5. Объекты	95