【问题标题】:File name is coming in SQL query output from unix文件名来自 unix 的 SQL 查询输出
【发布时间】: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.shtest.sh 是当前工作目录中的文件名。 few.sh 是我编写此代码的文件。我不知道这些名字是怎么来的。我在KSH工作。我试着用谷歌搜索,但没有找到任何线索。

【问题讨论】:

  • 你有一个MAIL_BODY_PATH,你是发送邮件还是来自cron的邮件?并且请检查 sqlplus: 表 TBAADM.PORD,那应该是 PRODm 你需要在tbaadm.gct)AND 之前的空格吗?
  • @WalterA,我打算只从few.sh 发送邮件,该邮件将由 cron 运行。不过我会检查 sql 命令。
  • 你检查过sql吗?
  • @WalterA,我后来检查了一下,发现在我测试时 db 已关闭。所以在它被提出后,我再次测试并且相同的代码有效。

标签: sql oracle unix ksh


【解决方案1】:

sqlplus 在命令中的输出

echo $TRANID

当 TRANID 中包含 * 时,ksh 将显示它可以找到的文件。 您应该使用引号来避免评估:

echo "$TRANID"

在编辑代码时,不妨加上 {}(这里不需要,好习惯):

echo "${TRANID}"

同样:

echo "${ID}"
echo "${PASS}"
...
-s "${ID}/${PASS}@rbluat"

【讨论】:

    猜你喜欢
    • 2017-11-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-18
    相关资源
    最近更新 更多