我正在使用命令提示符来运行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脚本需要两个点? 改进了格式
答案 0 :(得分: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';