Как открыть файл automaticalty — PL/SQL(Oracle SQL Developer)

#oracle #file #plsql #sqlplus #spool

Вопрос:

Я пишу с помощью команды spool в файл, и я хотел бы, чтобы, когда я закончу писать и воспользуюсь командой spool off, файл автоматически откроется для пользователя.

Как я могу автоматически открыть файл с помощью PL/SQL?

Спасибо!

Комментарии:

1. С PL/SQL? PL/SQL-это процедурный язык, который полностью работает внутри сервера базы данных. Он не имеет возможности взаимодействовать с дисплеем или клавиатурой клиента. И «spool» — это команда sqlplus, которая не имеет никакого отношения к языку pl/sql, поскольку вы говорите «автоматически открывается для пользователя», я предполагаю, что пользователь использует какой-то инструмент для отправки сценария sql. Так же, как в sqlplus есть команда «катушка» для записи всех выходных данных в файл, локальный для сеанса sqlplus, в нем также есть команда «редактировать», которая создаст редактор ОС по умолчанию (vi в linux, блокнот в Windblows).

2. @EdStevens просто для большей корректности повторно «отредактируйте»: не редактор ОС по умолчанию, но указанный в переменной _EDITOR , вы можете легко переопределить его, например: DEFINE _EDITOR ="/usr/bin/mcedit"

3. Короткий ответ: вы не можете. PL/SQL не может видеть ваши файлы и не знает, что вы загружаете. Он работает в базе данных.

Ответ №1:

SQL*Plus, SQL Developer и SQLcl имеют специальную команду HOST для таких вещей:

Таким образом, вы можете добавить команду host с open помощью в Linux/Unix и start в Windows. Например, я определяю переменную подстановки _START в своем glogin сценарии:

а затем используйте его host amp;_START amp;spoolfile , например, в моем скрипте sqlid_exec_html.sql для отчетов RTSM:

 spool amp;MON_FILE

SELECT
    DBMS_SQLTUNE.REPORT_SQL_MONITOR( 
       SQL_ID       => 'amp;MON_SQLID',
       sql_exec_id  => 'amp;MON_SQLEXEC',
       report_level => 'ALL',
       type         => 'ACTIVE') as report   
FROM dual
/
spool off
host amp;_START amp;MON_FILE
 

Но иногда (если shell/terminal поддерживает расширение вашего файла), вы можете просто ввести host amp;spoolfilename .