【问题标题】:SQLPLUS - Multiple sql statements from command lineSQLPLUS - 来自命令行的多个 sql 语句
【发布时间】:2017-08-30 07:21:17
【问题描述】:

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

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

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

1521/orcl

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

但是,我希望输出仅为 31,而不是列标题及其下方的行 - 类似于 SQL*Plus 中的SET HEADING OFF

我遇到了this question,它建议对echo 使用-e 选项,但这似乎在Windows 上不起作用,或者我遗漏了一些东西。

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.

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

C:\>echo -e "select 1 from dual; \n select 2 from dual;" | sqlplus -s zabbix/pwd@localhost:1521/orcl

SP2-0734: unknown command beginning "-e "select..." - rest of line ignored.

我没有看到可以用来关闭航向的 SQL*Plus 标志(例如我在上面使用的-s 用于静音)。因此尝试这种方法!

我该怎么做才能让它在 Windows 上运行?

【问题讨论】:

    标签: windows oracle sqlplus


    【解决方案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
    

    【讨论】:

    • 带有“pages 0”的语法效果很好。谢谢亚历克斯!
    • 实际上,输出值中的前导空格对我来说不适用于zabbix。
    • 我的意思是,而不是 select count() from v$session; COUNT() -------------- 39 我需要:select trim(count()) from v$session; COUNT() ------------- 39 当我使用 echo: (echo set pages 0 & echo select trim(LIMIT_VALUE) from v$resource_limit where RESOURCE_NAME='sessions'; &回声退出;) | “C:\Program Files\Zabbix\sqlplus.exe” -s zabbix/pwd@localhost:1521/orcl 我得到 - '此时来自意外。'知道如何解决这个问题吗?
    • 你是不是又用^^^)转义了内部右括号
    • 只是来这里说它在转义后起作用了)..再次感谢Alex,非常感谢。
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多