我正在使用命令提示符来运行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';