如何在SQLPLUS中执行SQL脚本期间回显文本

gle*_*roo 26 sql sqlplus oracle11g

我有一个批处理文件,它在sqlplus中运行SQL脚本并将输出发送到日志文件:

sqlplus user/pw <RowCount.sql> RowCount.log

我的日志文件包含:

Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - Production

SQL> SQL> 
  COUNT(*)
----------
     0

SQL> 
  COUNT(*)
----------
     0
Run Code Online (Sandbox Code Playgroud)

等等,但它有几千行输出,因此很难确定哪些结果属于哪个陈述.

我想在输出中添加一些格式,以便我可以看出发生了什么.要么执行语句的回显,要么在脚本中手动插入一些"echo"语句就可以了.理想情况下,它看起来像这样:

SQL> select(*) from TableA;
  COUNT(*)
----------
     0

SQL> select(*) from TableB;
  COUNT(*)
----------
     0
Run Code Online (Sandbox Code Playgroud)

gle*_*roo 44

提示命令将回声文本到输出:

prompt A useful comment.
select(*) from TableA;
Run Code Online (Sandbox Code Playgroud)

将显示为:

SQL> A useful comment.
SQL> 
  COUNT(*)
----------
     0
Run Code Online (Sandbox Code Playgroud)

  • 是的,但是这会让你在脚本中执行的每个查询之前添加`prompt`.无论如何,还是一个可能的解决方案,+ 1. (2认同)

Prz*_*lej 24

您可以SET ECHO ON在脚本的开头使用它来实现,但是,您必须使用@而不是<(也必须EXIT在末尾添加)指定您的脚本:

TEST.SQL

SET ECHO ON

SELECT COUNT(1) FROM dual;

SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual);

EXIT
Run Code Online (Sandbox Code Playgroud)

终奌站

sqlplus hr/oracle@orcl @/tmp/test.sql > /tmp/test.log
Run Code Online (Sandbox Code Playgroud)

test.log中

SQL> 
SQL> SELECT COUNT(1) FROM dual;

  COUNT(1)
----------
     1

SQL> 
SQL> SELECT COUNT(1) FROM (SELECT 1 FROM dual UNION SELECT 2 FROM dual);

  COUNT(1)
----------
     2

SQL> 
SQL> EXIT