Как можно писать в лог результат выполнения SQL скрипта?
1,00
р.
р.
Использую для выполнения на удаленной машине .bat, который вызывает SQL*Plus и выполняет скрипт. В лог пишется только результат выполнения, в виде сообщения, что столько то строк задействовано, или если произошла ошибка, то код ошибки. Текст .bat: SET NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 call sqlplus sys/pass@tnsalias as sysdba @restartQueuesSystem.sql >restartQueuesSystem.log pause exit Где: restartQueuesSystem.sql это файл со скриптом restartQueuesSystem.log файл содержащий лог выполнения, который пишет сам SQL*Plus Как можно настроить запись лога в SQL*Plus или модернизировать скрипт так, чтобы в логе писался сам результат выполнения? Например: В restartQueuesSystem.sql записано select * from table . Тогда в restartQueuesSystem.log я хочу видеть не только уведомление о выполнении, но и результат выполнения запроса select * from table .
Ответ Воспользуйтесь SQL*Plus User's Guide and Reference. Многие команды описанные в гл. 12 SQL*Plus Command Reference служат для управления выводом при выполнении SQL предложений в скрипте. Рабочий пример для начала example.bat: SET NLS_LANG=AMERICAN_AMERICA.CL8MSWIN1251 sqlplus -s -l user/pass@dbserver:1521ervice @example.sql > example.log pause example.sql: whenever sqlerror exit failure rollback set feedback on timing on prompt prompt ## creating table ... create table items as select rownum id, 'item '||rownum item from xmlTable ('1 to 3') run prompt prompt ## updating table ... update items set item=item||'**' where id=2 run prompt prompt ## querying table ... select * from items run prompt prompt ## droping table ... drop table items run exit При запуске из CMD терминала: > example.bat будет создан следующий лог файл, содержащий команды и результаты их выполнения: ## creating table ... 1 create table items as 2 select rownum id, 'item '||rownum item 3* from xmlTable ('1 to 3') Table created. Elapsed: 00:00:00.33 ## updating table ... 1 update items set item=item||'**' 2* where id=2 1 row updated. Elapsed: 00:00:00.02 ## querying table ... 1 select * 2* from items ID ITEM ---------- --------------------------------------------- 1 item 1 2 item 2** 3 item 3 3 rows selected. Elapsed: 00:00:00.01 ## droping table ... 1* drop table items Table dropped. Elapsed: 00:00:00.27