Программы на С и C++ преимуществом такого прямого интерфейса не обладают. По этой причине для генерации требуемых структур предлагается утилита Oracle Type Translator (ОТТ).
Кэш на стороне клиента
У объектов, которыми манипулируют современные объектно-ориентированные приложения, есть одно общее свойство — многие из них большие. Они могут содержать очень много данных, причем самого различного типа. Давайте рассмотрим некоторый объект Project, который включает в себя, например, следующее:
•	все версии описания целей проекта;
•	все версии плана проекта;
•	все версии сметы проекта;
•	все назначения и увольнения сотрудников, связанные с проектом;
•	все графики внедрения проекта;
•	все статьи расхода и дохода, связанные с проектом.
Даже если мы усечем некоторые сведения от "всех версий" до "текущих версий", у нас все равно будет очень много данных. Отметим также, что все эти данные структурированы внутри одного объекта. Мы можем извлечь такой объект из базы данных за одну довольно эффективную операцию, но тогда перед нами встанет проблема, как манипулировать этим объектом в памяти программы? Мы неизбежно придем к необходимости создания сложного кода, позволяющего добавлять повторяющиеся элементы во вложенные структуры. Как и во многих других случаях, решение концептуально простое — мы даем Oracle указание выбрать объект (или инициализировать пустой объект) в кэш на стороне клиента. Затем мы читаем и помещаем в него данные, пользуясь библиотекой вызовов OCI для кэша на стороне клиента.
Ни один из нас не создавал приложение, которое использовало бы кэш на стороне клиента, и не планирует в ближайшем будущем его создавать. Это сложная среда, для изучения которой, естественно, понадобится определенное время. Тем не менее, она позволяет решить некоторые проблемы повышения эффективности, возникающие при использовании средств объектной поддержки OracleS. Особенно это касается массивов переменной длины (VARRAY), которые представляют собой повторяющиеся группы данных, хранящиеся как часть строки таблицы. VARRAY можно обрабатывать полностью внутри PL/SQL на стороне сервера, используя ряд пакетных процедур или (что более вероятно) объектных методов (процедур PL/SQL, определенных как часть структуры объекта).
Однако если вы решите избрать этот путь, то почти наверняка столкнетесь с одной из перечисленных ниже проблем.
96	Отс1<-8