setting of shell variable should be made before sqlplus call
IFS=$'\n'
for i in $(cat $LST_HOME/doc.lst)
do
P1=$(echo $i | awk '{print $1}')
P2=$(echo $i | awk '{print $2}')
P3=$(echo $i | awk '{print $3}')
sqlplus64 $UserCoribudg/$PassCoribudg@$ORACLE_SID << EOF
@$SQL_HOME/update_p.sql $P1 $P2 $P3
commit;
exit
EOF
/data/java_1.6_XX/bin/java -cp fr.bla.bla.bla
done
P1=whatever
is not a valid sql code.- I assume java part make use of updated values.