私は次のようなdoc.lstを持っています:
23/02/2015 0 AAA
23/02/2015 0 AB1
23/02/2015 0 AC2
23/02/2015 0 FRR
23/02/2015 0 FPT
23/02/2015 0 PEI
23/02/2015 0 PEA
sqlplusリクエストで各部分をパラメータとして選択する方法を知りたいです。
これは私のSQLリクエストです。
UPDATE P
SET P.DATED='&1', P.DATEF='&1', P.COD='&2', P.CODB='&3'
WHERE P.G_BAT=1;
COMMIT;
私のSQLクエリは次のようになります
sqlplus user/pass@ORACLE_SID update_p.sql 23/02/2015 0 AAA
しかし、私は使いたい
while read line
do
sqlplus user/pass@ORACLE_SID update_p.sql doc.lst
commit;
done;
私が望むのは、私のdoc.lstに含まれているデータで私のテーブルPを更新することです。 1行、2行、3行の最初の要素を使用してテーブルPを更新したいと思います。このシェルの最後には、ストリームxmlを生成するコマンドがあります。
答え1
IFS=$'\n'
for i in $(cat doc.lst)
do
P1=$(echo $i|awk '{print $1}')
P2=$(echo $i|awk '{print $2}')
P3=$(echo $i|awk '{print $3}')
#now your SQL set would look like **SET P.DATED='$P1', P.DATEF='$P1', P.COD='$P2', P.CODB='$P3'** and you can launch your sql
done