我有一个 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