linux
  • oracle
  • shell
  • 2017-10-13 76 views 0 likes 
    0

    我寫了一個連接到oracle數據庫的shell腳本並執行了幾條命令。代碼如下所示。Oracle錯誤:[:into:unknown operator

    mSqlCmd="select * 
         from bs_transferSystemRole 
         where system_ = '$system' 
         and role_type = $roleType 
         and abstract_type_desc = '$abstractTypeDesc'" 
    
    sqlplus -s $DB_CONNECT <<EOF 2>/dev/null 
          WHENEVER SQLERROR EXIT SQL.SQLCODE 
          set echo off termout off feedback off heading off 
          $mSqlCmd; 
          exit SQL.SQLCODE; 
    EOF 
    
        if [ $? -eq 0 ] 
        then 
         mSQLCode=`sqlplus -s $DB_CONNECT <<EOF 2>/dev/null 
          WHENEVER SQLERROR EXIT SQL.SQLCODE 
          set echo off termout off feedback off heading off 
          insert into bs_transferSystemRole (system_, role_type, abstract_type_desc,use_synch_client_logic, multiple_match_option) values ('$system', $roleType, '$abstractTypeDesc','$useSyncClientLogic', $multiMatchOption); 
          exit SQL.SQLCODE; 
    EOF` 
    
    if [ $mSQLCode -ne 0 ] // error at this line: [: into: unknown operator 
         then 
    print "Error: Failed to add record to bs_transferSystemRole table for " \ 
           | tee -a $logFile 
    else 
          print "Record for '$line' added to bs_transferSystemRole table "\ 
           | tee -a $logFile 
    fi 
    

    當我運行在Linux計算機上,上面的腳本有適當的輸入文件,其中包含在代碼中所有相應的變量,我得到一個錯誤[:進入:未知運營商在該行如果[$ mSQLCode - ne 0]。

    是在oracle中插入語句的問題。任何幫助,將不勝感激。

    +0

    你可以在行之前添加一行'echo $ mSQLCode'('if [$ mSQL..'並且輸出.comment是'if else'一段時間以便清晰。 –

    +0

    @KaushikNayak我已經完成了這個它打印下面的「insert into bs_transferSystemRole(system_,role_type,abstract_type_desc,use_synch_client_logic,multiple_match_option)values('COREIN',67305744,'0','N',0)」 –

    +0

    也許你應該添加一個shebang到你的頭腳本:'#!/ usr/bin/env bash'確保你得到了你期望的解釋器。另外,我還以爲你應該像'$ mSQLCode'一樣加雙引號變量。最後,一些分號似乎從地方丟失我會把它們放在它們後面,就像關閉後的']'和'then'之前一樣。 – jww

    回答

    0

    行「if [$ mSQLCode -ne 0]」中的變量mSQLCode必須雙引號,如下所示:if [「$ mSQLCode」-ne 0]。

    原因是mSQLCode是Oracle查詢的結果,涉及多行代碼(insert into ...)。變量必須是雙引號,這意味着必須考慮查詢中的多行。

    相關問題