通过批处理文件传递参数到SQL查询不起作用

问题描述:

我有一个简单的sql查询,我使用批处理文件执行。我通过提供参数来调用批处理文件。通过批处理文件传递参数到SQL查询不起作用

SQL

Select empSal from Emp_Master where empID = '&2'; 
    exit 

批处理文件

sqlplus -s myusername/[email protected]%1 @E:\fetchEmpSal.sql %2 > E:\fetchEmpSal_log.txt 

%1 - 将是我的数据库名称或实例名称。 %2 - 将是我的经验。

这就是我如何调用批处理文件。我打开CMD,导航到路径并输入以下内容。

fetchEmpSal.bat mydb 1011 

现在,批处理文件运行正常,但每次都会询问empID。这是通过批处理文件传递参数到sql的正确方法吗?请帮助

编辑:

现在,当我打电话用上面的方法,如下面的命令改变该批处理文件。

sqlplus -s myusername/[email protected] @E:\fetchEmpSal.sql 1011 > E:\fetchEmpSal_log.txt 

但是,1011不作为参数传递给SQL。这是它以前的工作方式,但我不知道它为什么不起作用。任何帮助,将不胜感激。

+0

可能重复这个http://stackoverflow.com/questions/17575321/how-to-pass-variable-from-shell-script-to-sqlplus – 2015-04-02 11:54:41

也许我在这里错过了一些东西,但难道你不能只是改变你的SQL到以下?

Select empSal from Emp_Master where empID = '&1'; -- not &2 
exit 

你只提供一个参数值到您的SQL * Plus脚本,所以这也许并不奇怪,在SQL * Plus正在努力寻找&2的值。