传递参数的 SQL 脚本错误



我正在使用命令提示符来运行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脚本需要两个点?改进了格式

如 SQL*Plus® 用户指南和参考中所述,句点用于将替换变量的值与其他字符连接起来:

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

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

最新更新