Видача даних з програми на PL / SQL у форматі MS Word, Інші СУБД, Бази даних, статті

Зміст



Введення


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% comdemo лежать приклади і для видачі з 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.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*