СТАТЬЯ |
09.06.03
|
© Владимир
Пржиялковский,
координатор Евро-Азиатской Группы Пользователей Oracle,
преподаватель УКЦ Interface
Ltd.
PL/SQL, в силу его простоты, большого программного задела и эффективностью доступа к данным в БД, продолжает оставаться активным языком разработки прикладного ПО в Oracle. Поэтому естественно и нередко возникает желание использовать его не только для обработки данных, но и для связи с внешним, по отношению к Oracle, миром. В принципе такие возможности в PL/SQL достаточно широки благодаря праву обратиться из программ на этом языке ко внешним процедурам на C, к программам на Java и некоторым системным пакетам типа DBMS_PIPE. Однако в общем случае это будут довольно громоздкие решения, которые требуют от разработчика определенной квалификации. В то же время для некоторых частных задач в PL/SQL могут существовать и более простые методы. Здесь будет рассмотрен один такой пример: способ выдачи данных из программы на PL/SQL в файл формата MS Word.
Возможность выдавать данные в формате Word реализована через механизм обращения к COM Automation. Как и следовало ожидать, использовать ее можно только в СУБД Oracle, работающей на платформе Windows. Для того, чтобы она была осуществима, требуется выполнить некоторые подготовительные действия:
Когда вы выполните с помощью Oracle Universal Installer шаг 1, в %ORACLE_HOME% появится каталог com с примерами и объяснениями на английском языке. Там же, в каталоге %ORACLE_HOME%\com\demo лежат примеры и для выдачи из PL/SQL в MS Excel, MAPI и PowerPoint. Эти примеры устроены аналогично более востребованному примеру для MS Word, рассматриваемому в этой статье.
Взаимодействие с COM Automation реализуется в Oracle через внешние программы,
а общение с ними из PL/SQL выполняется средствами сетевой поддержки. Поэтому
чтобы все работало, нужно изменить конфигурационные файлы Oracle Net: listener.ora
на сервере и tnsnames.ora на клиенте. В последних версиях Oracle этим специально
можно не заниматься, так как обычно они содержат нужные настройки автоматически,
после установки ПО Oracle на компьютер.
Тем не менее, нелишне проверить следующее.
В файле listener.ora должен быть примерно следующий фрагмент:
В файле tnsnames.ora должен быть следующий фрагмент:
Если у вас на компьютере каталог ORACLE_HOME или название LISTENER процесса-“привратника” другие, нужно проставить то, что есть.
Шаги 3 и 4 рассматриваются ниже.
Пусть из программы, работающей от имени пользователя SCOTT, требуется выдать данные в формате MS Word. Для этого пользователь SCOTT должен обладать определенными правами и быть владельцем определенных объектов.
Войдем в SQL*Plus как SYS и выдадим привилегию:
Привилегия CREATE LIBRARY относительно редкая и используется в связи с т. н. “библиотекой”, обеспечивающей общение с внешними программами на C, но здесь к ее выдаче можно отнестись чисто прагматически, не вдаваясь в детали.
Следующим шагом войдем в схему SCOTT и подготовим в схеме инфраструктуру для COM Automation:
Проследите по таблице USER_OBJECTS появившиеся новые объекты. Они позволят организовать работу и с другими COM-объектами: Excel, PowerPoint и MAPI.
Выполним конкретно для MS Word:
Снова проверьте изменения в схеме по таблице USER_OBJECTS.
Выполним в SQL*Plus:
В каталоге c:\ должен появиться файл worddemo со списком сотрудников в формате MS Word.
Дополнительная информация
За дополнительной информацией обращайтесь в компанию Interface Ltd.
INTERFACE Ltd. |
|