首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询在运行shell脚本时返回0,而在检查db时返回6。

SQL查询在运行shell脚本时返回0,而在检查db时返回6。
EN

Stack Overflow用户
提问于 2022-07-01 13:22:54
回答 1查看 71关注 0票数 0

我正在尝试运行一个包含SQL查询的shell脚本。现在,由于故事需求,我不能在shell脚本中使用SQL脚本。我一直试图让shell脚本返回正确的计数,即'6‘,但它只是返回'0’。

代码语言:javascript
复制
#!/bin/ksh
. /apps/path/config/setenv.ksh
DATE=`date "+%m%d%Y`
returnMessage="`sqlplus  username/password@$ORACLE_SID << EOF
WHENEVER OSERROR EXIT SQL.OSCODE ;
WHENEVER SQLERROR EXIT SQL.OSCODE ;

spool /apps/path/data/test.txt
SET HEADING OFF
SET FEEDBACK OFF
SET VERIFY OFF
SET ECHO ON
SET PAGES 0
SET LINESIZE 90

select count(*) from table where dt = to_date('06/18/2020','MM/DD/YYYY');
EOF
`
"
        exitCode=$?
        oracleError=`echo "$returnMessage" | grep ORA-`
        if [ -n "$oracleError" -o "$exitCode" -ne 0 ]; then
                log "An error occurred while looking up the $COUNT"
                log "SQLPlus Exit Code = $exitCode"
                log "SQLPlus Message is: $returnMessage"
                return 1
        fi
        export COUNT=`echo $returnMessage"
        return 0

输出也给出如下

代码语言:javascript
复制
SQL> SET HEADING OFF
SQL> SET FEEDBACK OFF
SQL> SET VERIFY OFF
SQL> SET ECHO ON
SQL> SET PAGES 0
SQL> SET LINESIZE 90
SQL>
SQL> select count(*) from table where dt = to_date('06/18/2020','MM/DD/YYYY');
         0
SQL>

THis是我正在使用的输出和代码。不知道哪里出了问题,因为查询应该返回6;

EN

回答 1

Stack Overflow用户

发布于 2022-07-01 13:27:56

UnCOMMIT泰德数据仅在创建它的会话中可见(如果它不是COMMIT泰德,则在会话结束时将为COMMIT)。如果您无法看到来自另一个会话的数据(即在从shell调用的SQL*Plus中),那么请确保您已经在session中发出了一个COMMIT命令,您在其中INSERT编辑了数据。

注意:即使您作为同一个用户进行连接,这也将创建一个单独的会话,并且您将无法在另一个会话中看到未提交的数据。

如果您已经发出了一个COMMIT,但仍然看不到数据,那么请确保schema和shell程序都连接到同一个服务器和同一个数据库,并且正在查询该数据库的同一个用户的架构。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72829962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档