Logo CitForum CITForum на CD Форумы Газета Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

22.05.2012

Google
WWW CITForum.ru
2003 г

Выдача данных из программы на PL/SQL в формате MS Word

Владимир Пржиялковский,
координатор Евро-Азиатской Группы Пользователей Oracle,
преподаватель УКЦ Interface Ltd.

Введение

PL/SQL, в силу его простоты, большого программного задела и эффективностью доступа к данным в БД, продолжает оставаться активным языком разработки прикладного ПО в Oracle. Поэтому естественно и нередко возникает желание использовать его не только для обработки данных, но и для связи с внешним, по отношению к Oracle, миром. В принципе такие возможности в PL/SQL достаточно широки благодаря праву обратиться из программ на этом языке ко внешним процедурам на C, к программам на Java и некоторым системным пакетам типа DBMS_PIPE. Однако в общем случае это будут довольно громоздкие решения, которые требуют от разработчика определенной квалификации. В то же время для некоторых частных задач в PL/SQL могут существовать и более простые методы. Здесь будет рассмотрен один такой пример: способ выдачи данных из программы на PL/SQL в файл формата MS Word.

Рабочая платформа и общие положения

Возможность выдавать данные в формате Word реализована через механизм обращения к COM Automation. Как и следовало ожидать, использовать ее можно только в СУБД Oracle, работающей на платформе Windows. Для того, чтобы она была осуществима, требуется выполнить некоторые подготовительные действия:

  1. установить компоненты COM Automation при установке программной среды СУБД
  2. подготовить конфигурацию Oracle Net
  3. прогнать в конкретной схеме общий сценарий для возможности взаимодействия с COM Automation
  4. прогнать в этой же схеме специальный сценарий для возможности экспорта данных в MS Word

Выполняем шаги 1 и 2

Когда вы выполните с помощью 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.

Выводим список сотрудников из БД в Word

Выполним в SQL*Plus:

В каталоге c:\ должен появиться файл worddemo со списком сотрудников в формате MS Word.

Подписка на новости CITForum.ru

Новые публикации:

19 мая

  • Прозрачный механизм удаленного обслуживания системных вызовов

  • Система моделирования Grid: реализация и возможности применения

    Газета:

    Майкл Стоунбрейкер:

  • Ошибки в системах баз данных, согласованность "в конечном счете" и теорема CAP

  • Дискуссия по поводу "NoSQL" не имеет никакого отношения к SQL

    29 апреля

  • Материалы конференции "Корпоративные Базы Данных-2010"

  • Разные облики технологии баз данных (отчет о конференции)

    14 апреля

  • MapReduce: внутри, снаружи или сбоку от параллельных СУБД?

  • Научные вызовы технологиям СУБД

    Обзоры журнала Computer:

    31 марта

  • Рационализация согласованности в "облаках": не платите за то, что вам не требуется

  • Взаимные блокировки в Oracle

  • Архитектура среды тестирования на основе моделей, построенная на базе компонентных технологий

  • Объектное представление XML-документов

    Газета:

  • Microsoft для российских разработчиков: практика с элементами фундаментальности

    10 марта

  • HadoopDB: архитектурный гибрид технологий MapReduce и СУБД для аналитических рабочих нагрузок

  • Классификация OLAP-систем вида xOLAP

  • BGP. Три внешних канала. Балансировка исходящего и входящего трафиков

    Газета:

  • Что мы знаем об iPhone 4G?

    17 февраля

  • MapReduce и параллельные СУБД: друзья или враги?

  • Объектно-ориентированное программирование в ограничениях: новый подход на основе декларативных языков моделирования данных

  • Системологический подход к декомпозиции в объектно-ориентированном анализе и проектировании программного обеспечения

    Газета:

  • Эволюция Wine

    3 февраля

  • Дом на песке

  • Реальное переосмысление "формальных методов"

  • Интервью с Найджелом Пендзом

    Газета:

  • iPad. Первый взгляд на долгожданный планшет от Apple

  • Я не верю в iPad

    20 января

  • SQL/MapReduce: практический подход к поддержке самоописываемых, полиморфных и параллелизуемых функций, определяемых пользователями

  • Данные на лету: как технология потокового SQL помогает преодолеть кризис

    Обзоры журнала Computer:

    2 декабря

  • Сергей Кузнецов. Год эпохи перемен в технологии баз данных

    18 ноября

  • Генерация тестовых программ для подсистемы управления памятью микропроцессора

  • Сравнительный анализ современных технологий разработки тестов для моделей аппаратного обеспечения

    Все публикации >>>


  • IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

    Информация для рекламодателей PR-акции, размещение рекламы — тел. +7 495 6608306, ICQ 232284597 Пресс-релизы — pr@citforum.ru
    Послать комментарий
    Информация для авторов

    Редакция раздаёт котят!

    Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
    Copyright © 1997-2000 CIT, © 2001-2009 CIT Forum
    Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...