.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

관련 정보