.lstで複数のパラメータを使用する

.lstで複数のパラメータを使用する

私は次のような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

おすすめ記事