SQL 命令打印 .SQL 文件名

SQL command to print .SQL filename

是否有任何SQL命令可以在sqlplus提示符下打印当前正在执行的.SQL文件的名称?

有一种 Unix 方法可以做到这一点。但我正在寻找一个显示当前文件名的有效 SQL 命令。

没有合适的命令来执行此操作,但是 sqlcl

的 ER 很棒(而且很明显)

今天有几种方法可以实现这一目标。第一种是在每个脚本中添加代码以使用 dbms_application_info 并将 module/action 设置为进程和脚本的名称。这将适用于任何工具,因为它会将信息放入数据库中,以便稍后通过 sql/plsql 检索。它也可能很方便,因为它被捕获到 ASH/AWR/v$session.

之类的东西中

还有另一种特定于 sqlcl 的方法是 script 命令来访问上下文 运行 并打印它。这是两个选项的示例>>

SQL> !cat k.sql
--- generic 
exec DBMS_APPLICATION_INFO.SET_MODULE('InstallScript','k.sql');


select   sys_context('USERENV', 'ACTION'), sys_context('USERENV', 'MODULE') from dual;

-- sqlcl specific.....
script
ctx.write(ctx.getLastUrl() + "\n");
/

SQL> @k.sql

PL/SQL procedure successfully completed.

   SYS_CONTEXT('USERENV','ACTION')    SYS_CONTEXT('USERENV','MODULE')
__________________________________ __________________________________
k.sql                              InstallScript


file:/Users/klrice/k.sql
SQL>