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

时间:2013-11-07 18:31:43

标签: sql oracle11g sqlplus

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

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

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

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

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

3 个答案:

答案 0 :(得分:41)

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

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

将显示为:

SQL> A useful comment.
SQL> 
  COUNT(*)
----------
     0

答案 1 :(得分:22)

您可以在脚本开头使用SET ECHO ON来实现此目的,但是,您必须使用@而不是<来指定脚本(还必须添加{{1}最后):

<强> TEST.SQL

EXIT

<强>终端

SET ECHO ON

SELECT COUNT(1) FROM dual;

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

EXIT

<强> 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

答案 2 :(得分:1)

您可以更改列的名称,因此您可以使用“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