2017-10-13 5 views
0

oracleデータベースに接続してほとんどコマンドを実行しないシェルスクリプトを作成しています。コードは次のようになります。Oracleエラー:[:into:不明なオペレータ

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のInsert into文に問題がありますか。どんな助けもありがとう。

+0

ライン( '場合、[$ mSQL..'と出力を投稿するには、明確にするため、しばらくの間、' '場合は、他の.comment前に行'エコー$ mSQLCode'を追加することができます。私はそれを行っている –

+0

@KaushikNayakと( "COREIN"、67305744、 '0'、 'N'、0) " –

+0

あなたの頭にシバンを追加する必要があるかもしれません。スクリプト: '#!/ usr/bin/env bash'を実行して、あなたが期待しているインタプリタを取得していることを確認してください。また、' $ mSQLCode'のような引用変数を二重にすると思われました。 – jww

答えて

0

"if [$ mSQLCode -ne 0]"行の変数mSQLCodeは、次のように二重引用符で囲む必要があります。if ["$ mSQLCode" -ne 0]。

mSQLCodeの理由は、複数のコード行(insert into ...)を含むOracleクエリの結果です。変数は二重引用符で囲む必要があります。つまり、クエリ内の複数の行を考慮する必要があります。

関連する問題