我正在尝试将参数传递给SQL脚本,如此处所述。 Here
这是我的批处理文件。
testUpdate.bat
@echo off
sqlplus myuser@mydb/mypassword @updateRundate 25042018
pause
这是我的sql文件
updateRundate.sql
update SB_ER_RUNDATE set rundate = TO_DATE( '&1', 'ddmmyyyy');
commit;
exit;
我收到以下错误
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
old 1: update SB_ER_RUNDATE set rundate = TO_DATE( '&1', 'ddmmyyyy')
new 1: update SB_ER_RUNDATE set rundate = TO_DATE( 'to', 'ddmmyyyy')
update SB_ER_RUNDATE set rundate = TO_DATE( 'to', 'ddmmyyyy')
*
ERROR at line 1:
ORA-01858: a non-numeric character was found where a numeric was expected
Commit complete.
而不是传递的参数,垃圾值出现在查询中。请帮我解决这个问题。
更新
我的sqlplus安装路径是
C:\app\nt to de softwares\product\11.1.0\client_1
我观察到,如果我输出& 3而不是& 1,我得到的值是
softwares\product\11.1.0\client_1\product\11.1.0\client_1\sqlplus\admin\glogin.sql
& 1输出'to'的值。这实际上是安装路径的一部分。
更新2 我在post中尝试了第二个答案。奇怪的是,这个脚本在我的系统中不起作用,它在参数的位置打印'to'。但同样适用于另一台具有相同SQL +安装功能的PC。