【问题标题】:How to spool query results in oracle如何在oracle中假脱机查询结果
【发布时间】:2017-03-31 14:45:18
【问题描述】:

我正在尝试打印查询结果。这是 Oracle SQL 脚本:

set linesize 32767;
set pagesize 0; 
set newpage 0;
set space 0;
set echo off;
set feedback off;
set verify off;
set heading off;
set sqlprompt '';
set trimspool on;
set headsep off;

spool C:\asd.tmp
SELECT PROCESSNAME FROM ACTIVEPROCESSLIST ORDER BY PROCESSID;
spool off;

但是“asd.tmp”的内容是:

从 ACTIVEPROCESSLIST ORDER BY PROCESSID 中选择 PROCESSNAME

它只打印查询文本,而不是它的结果。如何后台处理查询结果?

注意:我使用的是“sqldeveloper-4.0.3.16.84-x64”,它以管理员身份运行。同样设置上面给出的属性可能是无意义的。我已经尝试了它们的一些组合,并且只执行了没有设置的假脱机命令。

我可以在 C++ 中执行的任何其他解决方案也适合我。

【问题讨论】:

  • 查询真的返回什么吗?
  • 是的,它返回 6 行。
  • SQL Developer 4.0.3 版已经相当老了,它对 SQL*Plus 命令的支持不如今天那么强大。获取版本 4.2 并重试 - 它更接近 100% SQL*Plus 命令/脚本引擎支持。例如 v4.0 不支持 PAGESIZE 0。
  • 我没有使用自己的电脑。这台电脑属于我的公司,你知道公司的政策。我无法更改 sqldeveloper 的版本。当我在 C++ 中执行它时,这个查询也同样有效。我的意思是,它在 c++ 中也不起作用。

标签: sql oracle sqlplus


【解决方案1】:

你可以使用命令行/sqlplus。尝试将脚本保存为文件,然后在命令行中:

    sqlplus -s [username]/[password]@[sid] @file_path > output.txt

【讨论】:

  • 行得通,我试过了。但它会将所有数据打印到命令行,尽管我的脚本文件包含“set echo off”并且在大表中需要很多时间。
【解决方案2】:

that link 中有另一种方法。我推荐它。它的工作速度不如 spool 解决方案,但至少在我的项目中有效。

替代方式存在问题,但this stackoverflow question 中的答案工作正常。我现在正在使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 1970-01-01
    • 2020-03-24
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多