传递参数的SQL脚本错误

时间:2014-12-26 07:51:50

标签: 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_FILE.FOPEN('DIR','&1..ext','R');

它有效。为什么这里的sql脚本需要两个点? 改进了格式

1 个答案:

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