저는 쉘 스크립팅을 처음 접했습니다. 레코드를 반복하여 업데이트 쿼리를 실행하고 싶습니다. 아래 코드를 시도했지만 오류가 발생합니다.
아래 $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