在shell脚本中存储plsql查询的输出

问题描述 投票:0回答:1

我没有输出到我的FILE进行查询。当我在oracle中运行时,我可以看到计数。有人可以让我知道我在做什么错吗?

#!/bin/bash

    ORACLE_HOME=*path*
    TNS_ADMIN=*path*

    export ORACLE_HOME
    export TNS_ADMIN

    FILE="/tmp/score_cnt.txt"

    sqlplus -S user/pass@service<< EOF

    spool $FILE
        select count(*) from score_tbl
         spool off
    exit;
    EOF
linux shell sqlplus
1个回答
0
投票

似乎是将*nix变量传递给SQL*Plus会使这里的事情变得混乱。

据我所知,您希望在脚本中传递文件名,那么最简单的机制是将其直接定义为SPOOL文件(而不是对其进行参数化。)]

此外,您可以添加一些非常有用的SET参数来美化输出。

sqlplus -S user/pass@service << EOF
SET LINESIZE 32000
SET PAGESIZE 0
SET TRIMSPOOL ON
SET TRIMOUT ON
SET WRAP OFF
SET TERMOUT OFF

spool /tmp/score_cnt.txt
    select count(*) from score_tbl;
     spool off

EOF

PS-EOF在sqlplus和exit中不需要其他select语句必须以;

结尾
© www.soinside.com 2019 - 2024. All rights reserved.