Как мне вызвать модули Perl из PL / SQL, Oracle Forms? - PullRequest
2 голосов
/ 05 июля 2011

То, что мы хотели бы сделать, это экспортировать данные из Oracle Forms в файл XLS (на стороне сервера). Мы обнаружили, что в Perl для этого есть превосходные модули SpreadSheet :: WriteExcel и SpreadSheet :: WriteExcelXML. Лучшее в этом то, что у нас не должно быть никаких других приложений (таких как MS Excel, OpenOffice).

Один из способов - подключиться к моей базе данных, выполнить запрос и сгенерировать файл XLS - все из сценария Perl. Но поскольку было бы проще поддерживать весь код в одном месте, есть ли способ вызвать эти модули Perl из кода PL / SQL из форм Oracle Forms ??

Спасибо

Ответы [ 3 ]

2 голосов
/ 05 июля 2011

Я не знаю форм оракула с 4.5 еще в 90-х годах, я предполагаю, что с тех пор он немного сдвинулся.

Если у вас PL / SQL работает на стороне сервера, то вы можете посмотреть на extproc_perl http://www.smashing.org/extproc_perl/userguide.html Но я считаю, что это может быть немного хлопотно - я написал только C ++ exptprocs, а не Perl.Ожидайте некоторые проблемы с прорезыванием зубов.Также код не находится непосредственно в PL / SQL.Вы должны написать оболочку PL / SQL вокруг perl (фактически вокруг C, который вызывает perl - но вам не нужно беспокоиться о C).

Более простое решение (которое, я думаю, у вас есть)уже упоминалось о том, что форма должна вызывать CGI-скрипт perl, который устанавливает свое собственное соединение с БД, а затем выводит Excel в качестве результата.

0 голосов
/ 05 июля 2011

Одним из решений является создание таблицы очередей заданий, и ваш код Oracle Forms вставляет записи в эту таблицу для задач, которые им необходимо выполнить. Затем создайте процесс-демон, который просматривает таблицу на наличие новых записей и выполняет обработку для обработки запросов.

Вы также можете использовать пакеты dbms_alert или dbms_pipe для отправки сообщений демону вместе с таблицей или вместо нее.

0 голосов
/ 05 июля 2011

Запуск внешних программ из форм PL / SQL или Oracle очень сложен:

http://www.orafaq.com/wiki/PL/SQL_FAQ#Can_one_execute_an_operating_system_command_from_PL.2FSQL.3F

Как @Sodved упоминает использование сценария Perl CGI для создания и загрузки файла пользователюэто, наверное, самый простой способ.Вы захотите использовать функцию WEB.SHOW_DOCUMENT для форм.

...