我正在尝试运行一个包含SQL查询的shell脚本。现在,由于故事需求,我不能在shell脚本中使用SQL脚本。我一直试图让shell脚本返回正确的计数,即'6‘,但它只是返回'0’。
#!/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输出也给出如下
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;
发布于 2022-07-01 13:27:56
UnCOMMIT泰德数据仅在创建它的会话中可见(如果它不是COMMIT泰德,则在会话结束时将为COMMIT)。如果您无法看到来自另一个会话的数据(即在从shell调用的SQL*Plus中),那么请确保您已经在session中发出了一个COMMIT命令,您在其中INSERT编辑了数据。
注意:即使您作为同一个用户进行连接,这也将创建一个单独的会话,并且您将无法在另一个会话中看到未提交的数据。
如果您已经发出了一个COMMIT,但仍然看不到数据,那么请确保schema和shell程序都连接到同一个服务器和同一个数据库,并且正在查询该数据库的同一个用户的架构。
https://stackoverflow.com/questions/72829962
复制相似问题