SQLPLUS - 命令行中的多个sql语句

时间:2017-04-04 21:48:40

标签: windows oracle sqlplus

我在Windows 2003 R2上有一个Oracle 11实例。

我运行它来获得如下所示的输出:

C:\>echo select count(*) from v$session; | sqlplus -s zabbix/pwd@localhost:

1521 / ORCL

  COUNT(*)
  ----------
       31

但是,我希望输出只是31,而不是列标题和它下面的行 - 这是{* 1}}从SQL * Plus中产生的效果。

我遇到this question建议使用SET HEADING OFF的{​​{1}}选项,但这似乎不适用于Windows或我遗漏了一些内容。

-e

这是我在上面引用的帖子中提到的确切命令:

echo

我没有看到我可以使用的SQL * Plus标志(比如我上面用来保持沉默的C:\>echo -e "set heading off; \n select count(*) from v$session;" | sqlplus -s zabbix/pwd@localhost:1521/orcl SP2-0734: unknown command beginning "-e "set he..." - rest of line ignored. )。因此尝试这种方法!

如何才能让它在Windows上运行?

1 个答案:

答案 0 :(得分:1)

有点凌乱,但你可以这样做:

C:>(echo set heading off & echo select count(*^^^) from v$session; & echo exit;) | sqlplus -s zabbix/pwd@localhost:1521/orcl

        53

^^^)中的count(*)部分is to escape the parenthesis,在括号内将两个echo命令包装在一起 - 这为SQL * Plus提供了单个输入。

顶部有空白行;您可能更愿意使用set pagesize 0代替set heading off

C:>(echo set pages 0 & echo select count(*^^^) from v$session; & echo exit;) | sqlplus -s zabbix/pwd@localhost:1521/orcl
        53

如果需要,您可以在一个set命令中放置多个设置。

或者,只需将所有命令放在脚本文件中,例如test.sql

set pages 0
select count(*) from v$session;
exit

然后运行:

sqlplus -s zabbix/pwd@localhost:1521/orcl @test