最近有个巡检任务, 具体的还不知道怎么巡检呢。暂时想用 spool 输出结果到文件中, 但是设置了 set heading on , 为什么结果中显示不出来字段的标题呢?而且 set trimout on; set trimspool on; 结果中的多余空格也没有去掉, 奇怪呀?我这个脚本中需要执行很多的查询语句。我是在 plsql 中的 command 窗口执行的

解决方案 »

  1.   

    你可以写个.bat文件,然后把你的查询语句写在一个sql里面,然后直接运行.bat把输出定位到log文件。
      

  2.   

    应该是可以的SQL> set feedback off;
    SQL> spool c:\test.log
    SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
    ------------------------------ ------- ----------
    T2                             TABLE
    A                              TABLE
    DEPT                           TABLE
    EMP                            TABLE
    BONUS                          TABLE
    SALGRADE                       TABLE
    COURSE                         TABLE
    I1                             TABLE
    I2                             TABLE
    SQL> spool off;
      

  3.   

    cd $ORACLE_HOME/sqlplus/admin
    vi glogin.sql
    设置你的SQL*PLUS命令,然后重启SQL*PLUS试试。
      

  4.   

    我就是写的单个 sql 脚本, 里边有多个查询语句, 就是结果出来的时候不带字段名, 根本看不明白哪是哪。我用的不是 sqlplus, 用的是 plsqldeveloper 的 command 窗口, 而且spool命令和sqlplus应该是没有关系的呀, 怎么就是不行尼
      

  5.   

    呵呵,那你可以在每个select前面加个注释,那输出文件也有了:
    -- execute select for tbl1;
    desc tbl1; --这里会有表结构先出来
    select * from tbl1;
      

  6.   

    不好意思,注释应该这么加:
    PROMPT--set linesize 1000 OK!set pagesize 1000;
    PROMPT--set pagesize 1000 OK!
    set linesize 1000;
    PROMPT--set linesize 1000 OK!
    col time format A20;
    PROMPT--col time format A20 OK!
    col what format A100;
    PROMPT--col what format A100 OK!
    PROMPT--select jobs
    select job,to_char(next_date,'yyyy-MM-dd')||' '||next_sec as time,failures,broken,what from user_jobs order by job;
    set serveroutput on;
    PROMPT--set serveroutput on OK!