2014-12-26 48 views
0

我正在使用命令提示符来运行SQL脚本。一个脚本的需要,其从设置文件(FILE_NAME = ABC)由CMD读取和馈送到脚本像这样传递参数的SQL脚本错误

sqlplus @"Script_Run" %file_name% 

里面的脚本的输入在线路读取的文件名:

UTL_FILE.FOPEN('DIR','&1.ext','R'); 

现在,当我运行的批处理文件,

替代发生的事情是:

old: "&1.ext" 
new: "ABCext" 

脚本返回“无效的文件操作”错误

但是,当我更改脚本行:

UTL_FILE.FOPEN('DIR','&1..ext','R'); 

它的工作原理。为什么这里的sql脚本需要两个点? 改进格式化

回答

2

SQL*Plus® User's Guide and Reference记载,该周期被用来连接与其他字符替代变量的值:

如果希望替换变量之后立即追加字符,使用一段将变量与角色分开。例如:

SELECT SALARY FROM EMP_DETAILS_VIEW WHERE EMPLOYEE_ID='&X.5'; 
Enter value for X: 20 

被解释为

SELECT SALARY FROM EMP_DETAILS_VIEW WHERE EMPLOYEE_ID='205';