【发布时间】:2013-05-04 04:27:36
【问题描述】:
有没有办法让 sqlplus 打印它执行的语句。 我的意思是我有一些在 bash 脚本中运行的 .sql 文件。当我读取日志文件时,我需要知道 sqlplus 运行了哪个语句。
示例: 假设我有这个 test.sql 文件:
set timing on
create table foo (a varchar2(10));
create table bar (b varchar2(10));
exit
当我检查日志时,我得到了这个:
Table created.
Elapsed: 00:00:00.02
Table created.
Elapsed: 00:00:00.01
这不是信息。有没有办法让我得到这样的输出:
Table foo created.
Elapsed: 00:00:00.02
Table bar created.
Elapsed: 00:00:00.01
甚至像这样:
create table foo (a varchar2(10));
Table created.
Elapsed: 00:00:00.02
create table bar (b varchar2(10));
Table created.
Elapsed: 00:00:00.01
我知道我可以在每个语句之前使用 PROMPT,但是我有很大的 sql 脚本,并且在每个语句之前编写 PROMPT 会很乏味。
编辑:
为了让 Allan 的解决方案始终有效(即使用“set echo on”),您应该避免以下情况:
1) 不要在 sqlplus 中使用 -S 选项,因为这会抑制命令回显的显示。
2) 不要像这样将你的脚本“猫”到 sqlplus:
cat test.sql | sqlplus scott/tiger@orcl
【问题讨论】: