是否有任何 SQL 命令可以在 sqlplus 提示符下打印当前正在执行的 .SQL 文件的名称?
有一种 Unix 方法可以做到这一点。但我正在寻找显示当前文件名的有效 SQL 命令。
没有合适的命令来执行此操作,但sqlcl的 ER 非常好(而且很明显)
今天有几种方法可以实现这一目标。第一种是将代码添加到要使用的每个脚本中dbms_application_info
,并将模块/操作设置为进程和脚本的名称。这将适用于任何工具,因为它将信息放入数据库以便稍后通过 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>