从批处理文件将参数传递给SQL - 出现垃圾值

时间:2018-04-25 09:19:26

标签: batch-file parameter-passing sqlplus

我正在尝试将参数传递给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。

0 个答案:

没有答案