使用 .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。我想要第一行的第一个元素、第二行和第三行更新我的表 P。在这个 shell 的末尾,我有一个生成流 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

相关内容