Выгрузка данных в excel oracle
How to Export Data using SQL Developer
Updated: Nov 2009 for SQL Developer 2.1
After completing this How-To, you should be able to understand:
- How to export data to various file formats using SQL Developer
- How to export the object definitions in your schema
Table of Contents
Oracle SQL Developer provides utilities to export both the definitions of the objects in a schema and the data stored in those objects. In this How-To we start by exporting the data and then move onto exporting object definitions.
- Oracle SQL Developer
- Oracle Database 9.2.0.1 or later
- Access to the Sample User Account HR (See Step 2 of this Getting Started: Oracle SQL DeveloperGuide)
SQL Developer provides the ability to export user data to a variety of formats: CSV, XML, LOADER, TEXT, INSERT, HTML and XLS.
-
In order to export the data from a table you can either use the SQL Worksheet and write a SQL query to retrieve the required data or you can Click on the Data tab of a table definition. We'll use this latter approach.
Expand the Connections Navigator and the Tables node.
Click on DEPARTMENTS.
Select the Data tab.
Select insert from the Export Data context menu. This will produce a file of insert statements.
You can also fine tune what is exported by selecting the columns and adding a where clause to reduce the number of records returned. In this example, we'll take the default of all the records and columns.
Exporting Object Definitions
SQL Developer provides the ability to export some or all of your object definitions to script files. You can use these as a backup of the object definitions or run them in another schema. In this exercise, you export all the object definitions and the data for the Departments table.
-
Using the main menu, select Tools->Database Export.
Click Next.
Click Go. The list now displays tables that start with "D".
В конце, я написал один PL/SQL пакет, который находится в database и может быть вызван из любой аппликации. В ходе написания я столкнулся со многими ограничениями и хочу рассказать о том, как их поборол.
Для тех — кто сомневается, я этого, конечно не мог знать заранее, но за несколько лет, что пакет работает в большой компании, у меня не было проблем свести RDF любой сложности, с многими триггерами/формулами, в один селект, хвала Ораклу. Наоборот, так как селект — стринговый параметр и его можно построить динамически, это дает большую гибкость. В параметрах можно задать даже имя таблицы.
Прежде всего не судите строго за обилие англицизмов(так, по-моему, это называется), я просто давно вне русского программного сообщества и не знаю, чем заменяют эти слова.
Очень часто в аппликациях, написанных в Oracle Forms/Reports для создания файла Excel используют Oracle*Reports, потому что там есть возможность использовать параметры и видоизменять селект до его выполнения. Потом в триггер на уровне строки вывода пишут вывод в файл. Получается csv файл. Ну что же, можно и так, конечно.
Если вместе с Excel нужно создать pdf, то никуда не денешься, пользуйся Reports и не жалуйся как тебя достала эта программа. Но ведь часто нужен только Excel и городить для этого RDF как-то не хочется.
Примерно такой набор. Думаю, тут все понятно. Несколько слов:
LIMIT_ROWS, LIMIT_LEN позволяют делить результирующий файл в процессе создания по мере достижения предельных значений на несколько Excel корректных.
LITERAL_PARAMS говорит о том, как использовать параметры выполнения — вставлять значения или выполнять селект в dbms_sql с dbms_sql.bind_variable.
OUT_TYPE задает формат: Excel Workbook,CSV,HTML,XML
Как обеспечить динамичность селекта с параметрами, получаемыми в runtime
Параметры передаем так:
Язык предвыполнения
- Получаем параметры выполнения.
- Компилируем текст селекта.
- Подаем его для выполнения следующему шагу.
Вот язык, который в конце покрывал все мои потребности
В тексте селекта это выглядит как комментарий(hint)
Шаг компиляции заключается в том, что я нахожу в тексте команду, если один из операндов требует выполнения — выполняю это как select (expression) from dual или как PL/SQL блок в execute immediate и заменяю всю команду на результат выполнения.
или
ну и так далее…
Я это описал для того, чтобы вы поверили, что эти приемы позволяют писать действительно эффективные селекты.
Никаких " and (:param1 is null or table_field=:param1)"
Парсинг и выполнение
Ради этого раздела я затеялся писать эту статью. Здесь я напишу об опыте, который приобрел, и который наверняка не нужен тому, кто не ходил на границах допустимого в Оракле. Например, все знают, что максимальная длина текстового поля в таблице — 4000, но многие ли знают, что предел для конкатенации строкового поля в селекте в оракле тоже 4000 байтов.
Получили селект после предкомпиляции с параметрами выполнения. Он у нас в переменной l_Stmt.
К сожалению, в PL/SQL нет легкой возможности организовать цикл по полям селекта, как это можно было бы сделать в Java. Будем пользоваться процедурой dbms_sql.parse, которая возвращает поля селекта как таблицу, по которой сделаем цикл в дальнейшем.
Что мы хотим сделать?
Выполнить парсинг и получить список полей с datatype.
Для этого применяем
Мы получили самое главное — список полей селекта в PL/SQL таблице l_LogColumnTblInit.
Это для нас выполнил великий пакет DBMS_SQL. Теперь мы можем организовать цикл по полям селекта.
Тот, кто пишет на Java(в том числе и я теперешний) посмеется над такой победой, там это всегда было — перебор полей в PreparedStatement.
Сейчас, зная Java, я бы написал бы, может, по другому, но принципиальные вещи не изменились бы.
Кстати, здесь я встретил ограничение на размер селекта 32К, не сразу, в ходе эксплуатации, когда начали писать серьезные селекты. И тут меня снова порадовал Оракл. Оказывается, длинный селект можно разбить на порции 256 байт, зарузить в PL/SQL таблицу l_LongSelectStmt dbms_sql.varchar2s и передать в overload версию dbms_sql.parse.
Теперь пришло время подумать о форматах вывода.
Допустим, наш селект выглядит так:
Для вывода в формате CSV нужно написать
Для вывода в формате HTML нужно написать
Для создания самого красивого, но и самого сложного формата Excel Workbook, мне пришлось поэкспериментировать с Excel. Excel Workbook — это не бинарный, а текстовый файл, его можно посмотреть и понять, как там все устроено.
Там есть CSS, определения Workbook,Worksheet, заголовков таблиц. Не буду углубляться, это не очень сложно понять, если вы встречали раньше HTML.
В Excel Workbook строка вывода будет выглядеть примерно так
Здесь, как вы видите, нам может пригодиться знание типов данных из виртуальной таблицы, полученной в dbms_sql.describe_columns.
Если сравнивать типы вывода, то можно сказать следующее:
CSV — маленький по размеру(это плюс), некрасивый, нет возможности нескольких таблиц(spreadshhets)
HTML — средний по размеру, достаточно сексуальный, нет возможности нескольких таблиц
Excel Workbook — большой файл, красивый, есть возможность создания нескольких таблиц
Алгоритм работы
Цикл по полям
Двигаясь по таблице выходных полей, заворачиваем очередное поле в соответствующие формату тэги или просто добавляем табуляцию(CSV). Теперь вы поняли, как я ударился об эти 4000 байтов. Мне пришлось проверять перед слиянием строк длину результата и, если она была больше 4000, то начинал новое поле вывода, примерно так:
Когда селект построен, выполняем его. Если селект большой, то его надо загрузить в dbms_sql.varchar2s таблицу и выполнить в dbms_sql. Если ваш DBA сказал, что он не потерпит литералы и требует, чтобы параметры были bind variable, то тоже нужно использовать dbms_sql с dbms_sql.bind_variable.
Иначе, если ваш селект поместился в 32К вашей varchar2 переменной l_Stmt можете открыть ref cursor:
Цикл по курсору
Делаем fetch и пишем в utl_file. Следим за количеством строк и за величиной выводимого файла, если нужно, завершаем его(красиво, Excel корректно) и начинаем следующий.
В конце, или, если это Excel Workbook в отдельном sheet, выводим параметры, с которыми выполнен отчет.
Ну вот, наверно и все по большому счету.
Наверное теперь можно показать результат:
Если кому интересно, я могу рассказать, как я завернул этот пакет в другой, который зиповал файл, если он был большой, посылал его по мейлу как ссылку или как attachment, но главное, это определения параметров и типовой экран ввода.
Классическая задача – есть база с данными. Данные эти заказчик желает лицезреть в виде красиво оформленных экселек заданного вида. Мало того, что форматирование шаблонов не подлежит обсуждению – в них, для полного счастья, натыканы не только эксельные формулы но и vba-макросы. А сервер может быть как на виндах, так и на никсах, на которых эксели и вовсе не предусмотрены. Как бы это все половчее организовать?
Совсем универсальные – не зависят от типа базы данных, операционной системы и наличия самого экселя на серваке
1 вариант: кросс-платформенно, какая база – не принципиально, на сервер ничего офисо-подобного ставить не надо.
Данные дергаем чем удобней – расписывать это не буду, зависит от ситуации. Для формирования отчетности в excel можно воспользоваться библиотеками:
Используя пакет Excel-Writer-XLSX (бывшие Spreadsheet::WriteExcel и Spreadsheet::ParseExcel) подробнейшие примеры использования поставляются вместе с пакетом.
Из минусов подобного подхода – когда последний раз пробовал – не удалось корректно отображать всю информацию в диаграммах, vba-содержимое файлов-шаблонов страдало. Возможно, сейчас эти недочеты уже подправлены. В любом случае, для большинства отчетов вышеупомянутых библиотек будет более чем достаточно.
2 вариант: воткнуть куда-нибудь Open Office и при необходимости использовать OOO SDK, например, через жаву. Официальные сниппеты валяются тут. Т.е. схема взаимодействия следующая – сервер получает запрос на формирование отчета, он подготавливает данные и перенаправляет их на сторонний сервис на том же сервере или другом. Там используя OpenOffice создается excel файл и возвращается основному серверу, который уже возвращает их клиенту. Из минусов – опен офис таки тяжеловат, на перекачивание данных туда-сюда будет уходить некоторое время. Из плюсов – проблем совместимости содержимого эксель-шаблонов не встречал – макросы, формулы, форматирование – работает все. Ну и опять же кроссплатформенно получается – благо опен офис вполне себе фурычит на никсах, виндах, да маках.
3 вариант: Аналогично варианту 2, однако, при необходимости создать документ эксель, оракловый сервер обращается к вашему самописному сервису на винде, где установлен эксель, предоставляя данные. Для формирования задействован “родной” sharp. Из минусов – таки нужен ексель и винда. Из плюсов – проблемы совместимости исключены.
4 вариант: если оракл версии 11 – самый оптимальный – использовать Oracle Bi Publisher – о том как преобразовать пользовательские шаблоны к вашим данным он позаботиться сам. Ваша задача адаптировать их с помощью встроенных средств внести соответствующие изменения в механизм формирования отчетов для клиентов.
Ну почему пользователи так любят Excel!
Почему, после того как им установили новую систему (разработанную собственными силами или купленную) они непременно хотят получить данные в Excel.
Казалось бы, в системе предусмотрено множество отчетных форм (причем по количеству и внешнему виду согласованные с этими же пользователями!), но они всё равно "хотят Excel". Им, видите ли, так привычнее. Издеваются, не иначе :-)
Однако попробуем разобраться, для чего же вот этот Excel может быть действительно полезен.
В любой системе есть потребность в так называемых нерегламентированных отчетах. Т.е. в таких отчетах, которые заранее не предусмотрены в системе в связи с тем, что требования к ним заранее невозможно формализовать (какие данные требуются, в каком виде, в какое время. )
Каким образом, пользователь может сформулировать, какие данные ему нужны? Да во многих случаях, он просто будет исходить из того, как он видит эти данные в экранных формах. Учитывая, что экранные формы Oracle Forms, как правило, позволяют выполнять нерегламентированные запросы (режим ввода запроса), а экранных форм в серьёзной системе не мало, то получается, что данные, которые пользователь может получить в экранных формах, представляют собой солидный источник данных для нерегламентированных отчетов.
Исходя из этого, экспорт данных из экранной формы в Excel выглядит весьма перспективно. Ведь чтобы не говорили противники Microsoft, Excel, действительно, весьма удобный продукт для обработки табличных данных.
Это особенно актуально для такой системы как Oracle Applications (Oracle E-Business Suite), где подавляющее большинство экранных форм используют однозаписные блоки данных, где в каждый момент времени на экране находится только одна запись, а работа с формой начинается с ввода и выполнения запроса. Желание посмотреть на все отобранные записи в виде списка - весьма законное!
Еще одной распространенной задачей, которую мог бы решить экспорт данных в Excel, является печать справочных данных (справочников). В любой системе существует большое количество различного рода справочников. Экранные формы для ввода в них данных - всегда присутствуют (иначе, как данные будут попадать в систему), а вот про печать справочных данных частенько забывают.
Итак, возможность экспорта данных из экранных форм в Excel, не такая уж и плохая идея. Она позволяет решить проблемы с выводом на печать справочников, с просмотром в виде списка данных из однозаписных блоков Oracle Forms и в какой-то степени помогла бы решить проблему с нерегламентированными отчетами.
Осталось лишь определиться, как же эту возможность реализовать.
Постановка задачи. Требования и допущения
После того как мы определились с целями и прежде чем бросаться в бой (пардон, в программирование) необходимо четко сформулировать требования к предстоящей реализации. Таковыми стали.
Требования
Совместимость с последующими версиями Forms Разработка велась для версии 6i, но с "прицелом" на возможный переход на 9i(10G) Независимость от платформы и способа эксплуатации Утилита должна работать как для режима клиент-сервер, так и для эксплуатации через Forms Server, причем не важно на какой платформе: будь то Windows или *nux Единственное условие, это наличие на клиентском компьютере MS Excel (а иначе куда экспортировать? :-) Универсальность Утилита должна работать для всех существующих форм и для всех форм, которые будут написаны в будущем
Допущения
Речь не идет о разработке генератора отчетов Говоря об экспорте данных, имеется в виду именно экспорт данных, а не создание готового отчета с заголовками, формулами, красивым форматированием. Не нужно думать о пользователях плохо. Получив "сырые" данные в Excel они смогут в течении пары минут "раскрасить" их до готового отчета. Передача данных обратно из Excel в Forms - не требуется В противном случае непонятно зачем же нам нужен Forms, если данные могут корректироваться в Excel. Forms становится просто не нужной прослойкой между БД и Excel.
Но, как говорится, лучше один раз увидеть. Так вот, нам нужна утилита которая позволяет, имея вот это:
В результате получить вот это:
Технические аспекты решения
Итак, теперь нужно выбрать конкретный вариант реализации.
Существует два базовых подхода к созданию файлов Excel из внешних приложений.
Первый подразумевает использование "родных" технологий Microsoft (DDE, OLE, VBX, ActiveX, . ). И Forms6i позволяет их использовать, но этот вариант не годится из-за требования совместимости с последующими версиями Forms. А, как известно, в версии 9i пакетов VBX, OLE2, DDE больше нет.
Второй подход заключается в том, чтобы создать файл в формате, который MS Excel сможет прочитать. Такими форматами являются: html, csv|tsv (comma|tab separated values).
Вот этим то мы и воспользуемся! Из предложенных форматов выбираем tsv (html требует больше места, а "," может встречаться в данных).
Экспортировать будем данные текущего блока формы (в котором находится курсор). Именно это позволит сделать утилиту универсальной. Ведь всегда можно программно определить первый, последний, следующий, предыдущий элементы текущего блока и перемещаться по записям вне зависимости от того, в каком блоке, какой формы, какого приложения Oracle Forms мы находимся!
- тип элемента один из TEXT ITEM, DISPLAY ITEM, LIST, CHECKBOX, RADIO GROUP
- элемент отображается на какой-либо канве и имеет свойства VISIBLE, DISPLAYED установленными в TRUE
В качестве первой строки экспортного файла было бы не плохо выгружать заголовки (PROMPT) элементов, тогда пользователь сможет визуально оценить какому элементу в блоке формы, соответствует какой столбец в таблице Excel. При таком подходе, это не всегда очевидное соответствие, ведь элементы могут располагаться даже в разных окнах одной формы.
Если вы используете общее меню для всего приложения, то для вызова утилиты удобнее всего создать специальный пункт меню "Экспорт в Excel". При желании его можно вывести как иконку в панель инструментов (Visible In Horizontal Menu Toolbar = Yes).
Для формирования файлов будем пользоваться пакетом TEXT_IO. Сами файлы должны иметь расширение xls для того, чтобы их можно было сразу открыть:
Но это будет работать только для клиент-серверной эксплуатации. Как же быть с Forms Server, да и еще скажем на Solaris? Ведь TEXT_IO будет писать на сервер приложения, а не на клиентскую машину.
Здесь, опять же, возможны варианты.
Счастливые обладатели Forms9i могут попробовать новую утилиту WebUtil для доступа к клиентскому компьютеру. Хотя ни что не мешает вам написать, что-то подобное на Java и в версии Forms6i.
А можно пойти и другим путем.
Если назвать такой скрипт exp2xls и положить в каталог $ORACLE_HOME/Apache/Apache/cgi-bin , то вызывать его из Forms можно примерно так:
Те, кто используют Windows в качестве OS для сервера приложений, думаю, без труда смогут переписать этот скрипт в bat или cmd файл. Нужно лишь заменить cat на type и rm -f на del
Имя экспортного файла в такой многопользовательской среде лучше генерировать произвольно. Для этого можно воспользоваться генератором случайных чисел.
Остается лишь позаботиться, чтобы Forms и cgi-скрипт "договорились" куда (каталог) один будет выкладывать файл и откуда второй его будет брать.
А пользовательский браузер понимает, что для показа такой страницы нужно запускать Excel.
Нужно заметить, что у данного способа есть один недостаток. Ведь теоретически, для того, чтобы получить в браузере excel-файл, и, соответственно, получить доступ к данным, необязательно заходить в систему. Можно просто открыть браузер и пытаться подбирать url таким образом, чтобы угадать имя временного файла. Это, конечно, маловероятно, но, тем не менее, стоит подумать, допустим ли для вас такой вариант.
Решение
В принципе, у вас есть уже всё, что необходимо для реализации задуманного. И написать подобную утилиту вы наверняка сможете сами. И возможно даже лучше чем то, что предложено ниже.
Собственно решением является plsql пакет fp_exp с единственной public процедурой to_excel , которая вызывается без всяких параметров, например, в пункте меню "Экспорт в Excel":
Перед началом использования нужно выполнить предварительную настройку пакета, установив значения константам, находящимся в спецификации пакета.
Не забудьте про cgi скрипт!
Приложение
Здесь описаны некоторые советы по возможному дальнейшему совершенствованию предложенного механизма экспорта данных в Excel.
Вместо предложенного формата файла, можно попробовать использовать sylk формат, описание которого можно найти в Интернет. Excel также понимает этот формат, предоставляющий большие возможности по форматированию данных.
В качестве первой строки в файл можно записывать заголовок окна формы. Получится своеобразный заголовок отчета в Excel.
Блок формы может содержать десятки, сотни тысяч записей, а то и больше. В таких случаях выгружать все записи блока - задача не реальная. Для таких случаев можно реализовать ограничитель на количество выгружаемых записей. Т.е. условием окончания записи в файл сделать не только достижение последней записи в блоке, но и дополнительно к этому, достижение максимально возможного количества записей для выгрузки, если таковое установлено.
Аннотация: В этой лекции слушатель ознакомится с возможностями экспорта и импорта данных из приложения в Excel и обратно, используя различные интерфейсы обработки и передачи данных.
Чтение данных из Excel
Несмотря на то что в Oracle есть свой построитель отчетов, иногда возникает потребность в нерегламентированных отчетах, то есть в тех отчетах, которые были не предусмотрены в ходе проектирования системы. Существует необходимость в загрузке данных из различных внешних источников, что обусловлено многообразием форм представления и хранения данных. Каждая среда разработки предоставляет различные интерфейсы экспорта и импорта данных; Oracle Forms , в свою очередь , поддерживает достаточно много технологий для осуществления загрузки и выгрузки данных из внешних источников.
В этой главе мы рассмотрим возможные способы экспорта и импорта данных между приложениями Excel и Oracle Forms с помощью пакета . В конце главы будет приведен пример экспорта и импорта данных с помощью технологии .
Oracle Objects for OLE (OO4O)
Oracle Objects for OLE ( OO4O ) - это разработанный компанией Oracle набор СОМ-компонентов, совместимых с OLE Automation , который позволяет работать с Oracle из клиентских приложений с использованием скриптовых языков. Этот метод лучше подходит для работы с Oracle, чем Microsoft Open Database Connectivity ( ODBC ), к тому же OO4O предоставляют полную поддержку PL/SQL. Oracle Objects состоят из трех компонент:
- OLE 2.0 Automation (InProcess) Server - эта компонента предоставляет интерфейс OLE Automation для приложений, поддерживающих OLE automation scripting (например, Visual Basic).
- Oracle Data Control - управляющий элемент для Visual Basic.
- Two C++ Class Libraries - C-библиотеки для Microsoft Foundation Classes ( MFC ) и Borland ( OWL ).
Особенно хорошо то, что вы можете использовать OO4O из любых приложений MS Office, применяющих VB-подобный язык макросов.
Ниже приведен простой пример создания соединения с базой данных Oracle на Visual Basic:
Технология OO40 имеет солидное преимущество над другим подходом - VB/JET/ODBC:
- Доступ к данным осуществляется через идентификатор строки - rowid, а не через первичный ключ или уникальный индекс в подходе VB/ ODBC . Если rowid доступен, то данные доступны для корректировки.
- Возможность создавать связываемые переменных в SQL-предложениях (т. е. " SELECT * FROM EMP WHERE ENAME = :name "). PL/SQL также поддерживает связывание переменных.
Пакет TEXT_IO
Пакет TEXT_IO в Oracle Forms обеспечивает доступ к файлам операционной системы.
Пакет TEXT_IO позволяет приложению, разработанному на Oracle Forms , как читать из файлов операционной системы, так и писать в них.
Возможность использовать пакет Text_IO появилась в Oracle Developer 2000 (Forms 4.5). Рассмотрим пример выгрузки данных с помощью набора процедур и функций пакета TEXT_IO :
В этом разделе мы рассмотрели и проработали возможные варианты работы с Excel-файлами. Такое количество подходов дает вам возможность выбрать для себя наиболее удобный способ импорта и экспорта данных. Мы же с вами рассмотрим пример с использованием технологии .
Object Linking and Embedding
Мы уже изучали подробно эту технологию, когда применяли OLE -контейнер в нашем приложении. Сейчас же мы рассмотрим несколько иной вариант, а именно - встроенный пакет , который поддерживается во всех последних версиях Forms. Пакет сопровождает PL/SQL API для создания, манипулирования и доступа к атрибутам пакета .
Запуск и установка соединения с EXCEL
Для того чтобы манипулировать объектами , необходимо использовать определенный тип данных , который предназначен исклю-
чительно для работы с пакетом OLE2 . В листинге 11.1 в секции DECLARE показан пример объявления переменных пакета.
Для вызова методов пакета нужно указывать ключевое слово - ole2 .[метод, тип] . Показанный в примере тип данных ole2 .obj_type служит для объявления объектов OLE2 , а ole2 .list_type используется для объявления списка аргументов. Если провести аналогию, то тип данных ole2 .list_type очень похож на тип данных ParamList , который также содержит список параметров.
Следующим нашим шагом в изучении пакета OLE2 будет создание объектов OLE2 (листинг 11.2).
Для того чтобы проверить вышеописанный код, создайте произвольную форму с одной кнопкой. Создайте для кнопки обработчик WHEN-BUTTON-PRESSED и выполните в нем приведенный код. Когда в режиме выполнения формы вы нажмете на кнопку, ничего не произойдет, но это на первый взгляд, на самом же деле если вы откроете " Диспетчер задач", то увидите процесс EXCEL .EXE. Теперь, для того чтобы увидеть электронную таблицу в рабочей области, а не в диспетчере задач, добавьте в тело триггера код, приведенный в листинге 11.3, который не только отображает приложение EXCEL , но и загружает указанный файл .
Для того чтобы вам было легко разобраться с примерами, которые будут приведены далее, ознакомьтесь с синтаксисом некоторых методов пакета (табл. 11.1).
- OLE2 .Add_Arg - добавляет аргумент в список аргументов .
- OLE2 .Add_Arg_Obj - добавляет объект-аргумент в список аргументов .
- OLE2 .Create_arglist - создает список аргументов , который может быть передан OLE2 .
- OLE2 .Create_Obj - создает объект OLE2 Automation , например, Microsoft Word, Microsoft Excel.
- OLE2 .Destroy_Arglist - уничтожает список аргументов .
- OLE2 .Get_Char_Property - возвращает свойство объекта OLE2 Automation .
- OLE2 .Get_Num_Property - возвращает идентификатор значения объекта OLE2 Automation .
- OLE2 .Get_Obj_Property - возвращает значение объектного типа объекта OLE2 Automation .
- OLE2 . Invoke - выполняет метод OLE2 .
- OLE2 .Invoke_Num - возвращает числовое (number) значение объекта OLE2 Automation , используя указанный метод.
- OLE2 .Invoke_Char - возвращает символьное (character) значение объекта OLE2 Automation , используя указанный метод.
- OLE2 .Invoke_Obj - возвращает значение типа объекта OLE2 .
- OLE2 .IsSupported - возвращает TRUE , если OLE2 поддерживается на текущей платформе.
- OLE2 .Last_Exception - возвращает идентификатор последнего возбужденного исключения.
- OLE2 .Release_Obj - сигнализирует объекту OLE2 Automation , что PL/SQL-клиент больше не нуждается в нем.
- OLE2 .Set_Property - устанавливает значение указанного свойства объекта OLE2 Automation .
В листинге 11.3 для отображения приложения EXCEL на экране применяется процедура OLE2 .SET_PROPERTY . В этом примере мы также использовали тип данных ole2 .list_type для создания списка аргументов. Для того чтобы загрузить в EXCEL нужный нам файл , мы добавили аргумент docname , в который сохраняли имя запускаемого файла, а затем активировали его с помощью параметра " Open " процедуры Invoke_obj .
Читайте также: