Assuming you are running a UNIX environment:

You should be able to put all the commands in one script. I've never done it with both sqlplus and sqlldr but I cant see why it cant be done. I usually use the following format when running sqlplus from a shell script:

#
# SHELL SCRIPT
#

sqlplus -s usr/password << MYSQL


set head off

select transaction_ref, pack_id from topm_log where date_generated
between to_date('${DATE2}','DD-MON-YYYY') and to_date('${DATE3}','DD-MON-YYYY')
and job_status='${ANS}'
and pack_type=0
order by transaction_ref;
MYSQL

#
# SHELL SCRIPT CONTINUED
#

THis will run the sql between the two MYSQL's

You can do the embed sqlldr calls in scripts as well e.g:

mv $invitem_file $invitem_file.dat


sqlldr userid=$ORACLE_USER/$ORACLE_PASSWORD log=$TMP/zinvitem.log control=$S
QL_LOADER/zinvitem.ctl data=$invitem_file bad=$invitem_file.bad direct=true >> $
LOGFILE
RETVAL=$?


mv $invitem_file.dat $invitem_file


Hope that helps