【发布时间】:2015-08-21 10:28:50
【问题描述】:
我编写了一个简单的 sh 文件来从 Oracle SQL 检索数据,但出现错误。以下是我的代码:
. $HOME/.profile
function assignVariables
{
ID="finapp"
PASS="finapp"
MAIL_BODY_PATH="/rbluat/BACKEND/Finacle/FC10.2.9/app/CDCI_LOGS/"
}
echo $ID
echo $PASS
function getDatatrans
{
TRANID=`sqlplus -s $ID/$PASS@rbluat <<EOF
SELECT DISTINCT TRAN_ID,DTH_INIT_SOL_ID,TRAN_DATE,DEL_FLG FROM TBAADM.DTD WHERE PSTD_FLG='N' AND ENTRY_USER_ID='FIVUSR' and del_flg='N' and tran_date=(select db_stat_date from tbaadm.gct)AND REF_NUM IN (SELECT PYMT_REF_NUM FROM TBAADM.PORD WHERE STATUS IN ('A','H'));
exit;
EOF`
}
assignVariables
getDatatrans
echo $TRANID
我得到的输出是:
[YOU HAVE NEW MAIL]
SELECT DISTINCT TRAN_ID,DTH_INIT_SOL_ID,TRAN_DATE,DEL_FLG FROM TBAADM.DTD WHERE PSTD_FLG='N' AND ENTRY_USER_ID='FIVUSR' and del_flg='N' and tran_date=(select db_stat_date from tbaadm.gct)AND REF_NUM IN (SELECT PYMT_REF_NUM FROM TBAADM.PORD WHERE STATUS IN ('A','H')) few.sh test.sh ERROR at line 1: ORA-00942: table or view does not exist
`
这里的few.sh 和test.sh 是当前工作目录中的文件名。 few.sh 是我编写此代码的文件。我不知道这些名字是怎么来的。我在KSH工作。我试着用谷歌搜索,但没有找到任何线索。
【问题讨论】:
-
你有一个
MAIL_BODY_PATH,你是发送邮件还是来自cron的邮件?并且请检查 sqlplus: 表 TBAADM.PORD,那应该是 PRODm 你需要在tbaadm.gct)AND之前的空格吗? -
@WalterA,我打算只从
few.sh发送邮件,该邮件将由 cron 运行。不过我会检查 sql 命令。 -
你检查过sql吗?
-
@WalterA,我后来检查了一下,发现在我测试时 db 已关闭。所以在它被提出后,我再次测试并且相同的代码有效。