传递的参数的SQL脚本错误

传递的参数的SQL脚本错误,sql,oracle,oracle11g,cmd,Sql,Oracle,Oracle11g,Cmd,我正在使用命令提示符运行SQL脚本。其中一个脚本需要一个文件名,该文件名由CMD从设置文件(file_name=ABC)读取,并像这样馈送到脚本 sqlplus @"Script_Run" %file_name% 在脚本内部,在以下行中读取输入: UTL_FILE.FOPEN('DIR','&1.ext','R'); 现在当我运行bat文件时 发生的情况是: old: "&1.ext" new: "ABCext" 脚本返回“无效文件操作”错误 但当我将脚本行更改为: UTL

我正在使用命令提示符运行SQL脚本。其中一个脚本需要一个文件名,该文件名由CMD从设置文件(file_name=ABC)读取,并像这样馈送到脚本

sqlplus @"Script_Run" %file_name%
在脚本内部,在以下行中读取输入:

UTL_FILE.FOPEN('DIR','&1.ext','R');
现在当我运行bat文件时

发生的情况是:

old: "&1.ext"
new: "ABCext"
脚本返回“无效文件操作”错误

但当我将脚本行更改为:

UTL_FILE.FOPEN('DIR','&1..ext','R');
它起作用了。为什么这里的sql脚本需要两个点? 改进的格式

如中所述,句点用于将替换变量的值与其他字符连接起来:

如果要在替换变量后立即追加字符,请使用句点将变量与字符分隔开。例如:

被解释为

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';