【问题标题】:How to open file automaticalty - PL/SQL(Oracle SQL Developer)如何自动打开文件 - PL/SQL(Oracle SQL Developer)
【发布时间】:2021-09-30 22:30:15
【问题描述】:

我正在使用 spool 命令写入文件,我希望在完成写入后使用 spool off 命令自动为用户打开文件。

如何使用 PL/SQL 自动打开文件?

谢谢!

【问题讨论】:

  • 使用 PL/SQL? PL/SQL 是一种完全在数据库服务器内部运行的过程语言。它无法与客户端的显示器或键盘进行交互。而'spool'是一个与pl/sql语言无关的sqlplus命令既然你说'为用户自动打开',我假设用户正在使用一些工具来提交一个sql脚本。正如 sqlplus 有一个 'spool' 命令将所有输出写入 sqlplus 会话的本地文件,它也有一个 'edit' 命令,它将生成默认的操作系统编辑器(linux 中的 vi,Windblows 中的记事本)。
  • @EdStevens 只是为了更正确重新“编辑”:不是默认的操作系统编辑器,而是在变量_EDITOR 中指定,您可以轻松地重新定义它,例如:DEFINE _EDITOR ="/usr/bin/mcedit"
  • 简短的回答是你不能。 PL/SQL 看不到您的文件,也不知道您在假脱机。它在数据库中运行。

标签: oracle file plsql sqlplus spool


【解决方案1】:

SQL*Plus、SQL Developer 和 SQLCl 有一个特殊的命令 HOST 来处理这些事情:

因此,您可以在 Linux/Unix 上添加命令 hostopen,在 Windows 上添加 start。 例如,我在我的glogin 脚本中定义了一个替换变量_START

然后将其用作host &_START &spoolfile,例如在我的脚本sqlid_exec_html.sql 中用于RTSM 报告:

spool &MON_FILE

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

但有时(如果 shell/终端支持您的文件扩展名),您只需键入 host &spoolfilename

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-16
    • 2021-09-11
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    相关资源
    最近更新 更多