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>
是否有任何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>