31

我有一个批处理文件,它在 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

等等,但它有几千行输出,因此很难确定哪些结果属于哪个语句。

我想在输出中添加一些格式,以便我可以辨别发生了什么。执行语句的回显或手动将一些“回显”语句插入脚本都可以。理想情况下,它看起来像这样:

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

SQL> select(*) from TableB;
  COUNT(*)
----------
     0
4

3 回答 3

52

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

prompt A useful comment.
select(*) from TableA;

将显示为:

SQL> A useful comment.
SQL> 
  COUNT(*)
----------
     0
于 2013-11-08T11:52:13.003 回答
31

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

测试.sql

SET ECHO ON

SELECT COUNT(1) FROM dual;

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

EXIT

终端

sqlplus hr/oracle@orcl @/tmp/test.sql > /tmp/test.log

测试日志

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

  计数(1)
----------
     1

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

  计数(1)
----------
     2

SQL>
SQL> 退出
于 2013-11-07T22:15:58.673 回答
3

您可以更改列的名称,因此您将获得一些有意义的东西,而不是“COUNT(*)”。您必须为此更新“RowCount.sql”脚本。

例如:

SQL> select count(*) as RecordCountFromTableOne from TableOne;

将显示为:

RecordCountFromTableOne
-----------------------
           0

如果你想在标题中有空格,你需要用双引号括起来

SQL> select count(*) as "Record Count From Table One" from TableOne;

将显示为:

Record Count From Table One
---------------------------
            0
于 2016-08-19T18:23:45.170 回答