Прежде всего, ваш скрипт SQL* Plus даже не запускается без ваших попыток входа в систему.
dbms_output enable(...)
отсутствует точка ('.'). - Ваш анонимный блок PL / SQL не имеет
end;
оператора - @ "path / file.SQL` - это команда SQL* Plus - ее нельзя внедрить в анонимный PL / * Блок 1038 *.
Помимо этих основных проблем c, FND_FILE.PUT_LINE
предназначен только для параллельных программ PL / SQL, то есть параллельных программ, исполняемые программы которых указывают на PL / * 1041. * пакетная процедура и не a. sql файл в $ APPL_TOP.
Для SQL* Plus одновременно работающих программ, т. е. запуск файла. sql в $ APPL_TOP, FND_FILE.PUT_LINE
не работает. Вместо этого ваш вывод SQL* Plus автоматически записывается в вывод запроса. Не существует стандартного способа записи в журнал запросов.
Если вы действительно необходимо записать в журнал запросов, вы можете, возможно, позвонить FND_FILE.PUT_NAMES
, чтобы FND_FILE.PUT_LINE
записать во временные файлы, которые вы называете. Затем, зная текущий идентификатор запроса и logi c Oracle, которые EBS использует для локальных файлов вывода и журналов, выполните команды FND_FILE.CLOSE
и host
для перемещения файлов с именами, указанными вами, в фактические расположения. Это может работать.
Было бы намного лучше переделать вашу параллельную программу как пакет PL / SQL. Тогда FND_FILE
работает просто отлично. Если вы знаете, как вызывать Java из базы данных, вы очень мало можете сделать в сценарии. sql, чего нельзя сделать в пакете PL / SQL.
Я не написал a. sql параллельная программа в годах, и я пишу параллельные программы все время.