私はシェルスクリプトに初めて触れました。レコードを繰り返して更新クエリを実行したいと思います。以下のコードを試しましたが、エラーが発生します。
以下の $data の値は次のとおりです。
2021-06-14(日付入力)、30914(番号入力)
$ORACLE_HOME/bin/sqlplus -s $UP <<EOF
for data in `cat Store_Days_To_Open_$exeDate.csv | sort --unique `
do
business_date=`echo $data | cut -d \, -f 1`;
echo $business_date
store=`echo $data | cut -d \, -f 2`;
echo $store
UPDATE sa_store_day SET store_status= 'W' , data_status = 'P', audit_status='R' WHERE store= $store and business_date= $business_date;
done
commit;
exit
EOF
答え1
ShellコマンドとSQLコマンドを混在させることはできません。少なくともsqlplus
シェルコマンドを解釈するわけではありません。次のように試すことができます。
>outfile
for data in `sort --unique Store_Days_To_Open_${exeDate}.csv`
do
business_date=`echo $data | cut -d \, -f 1`;
echo $business_date
store=`echo $data | cut -d \, -f 2`;
echo $store
echo "UPDATE sa_store_day SET store_status= 'W' , data_status = 'P', audit_status='R' WHERE store= $store and business_date= $business_date;" >>outfile
done
echo exit | $ORACLE_HOME/bin/sqlplus -s $UP @outfile