Как я знаю, нет никакого способа передать параметр в качестве переменной в Ctrl.
Но Вы можете использовать константу в ctl и изменять файл clt, чтобы изменять это постоянное значение (в содержимом файла ctl) для каждого времени загрузки.
Редактировать: более конкретно.
my_loader.ctl:
--options
load data
infile 'c:\$datfilename$' --this is optional, you can specify here or from command line
into table mytable
fields....
(
datafilename constant '$datfilename$', -- will be replace by real datafname each load
datacol1 char(1),
....
)
dataload.bat: предположим, что $ datfilename $ - это текст, который будет заменен на имя файла данных.
::sample copy
copy my_loader.ctl my_loader_temp.ctl
::replace the name of datafile (mainly the content to load into table's data column)
findandreplace my_loader_temp.ctl "$datafilename$" "%1"
::load
sqlldr user/pwd@db data=%1 control=my_loader_temp.ctl
::or with data be obmitted if you specified by infile in control file.
sqlldr user/pwd@db control=my_loader_temp.ctl
используя: dataload.bat mydatafile_2010_10_10.txt