2015-06-06 20 views
0

我已經寫了一個簡單的sh文件來從Oracle SQL檢索數據但出錯。以下是我的代碼:文件名是來自unix的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/[email protected] <<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工作。我嘗試了谷歌搜索,但沒有發現任何線索。

+0

你有'MAIL_BODY_PATH',你發送郵件還是從cron發來的郵件?請檢查sqlplus:table TBAADM.PORD,如果是PRODm,你需要在'tbaadm.gct)AND'之前的空格嗎? –

+0

@WalterA,我打算從'few.sh'發送郵件,這個郵件只能由cron運行。我會檢查sql命令。 – Mistu4u

+0

你檢查過sql嗎? –

回答

0

sqlplus中的在命令

echo $TRANID 

當TRANID中有一個*和ksh將顯示它可以找到文件評估的輸出。 您應該使用引號,以避免評價:

echo "$TRANID" 

當你編輯你的代碼,你還不如加{}(這裏不需要,好習慣):

echo "${TRANID}" 

同樣:

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