通过批处理文件传递参数到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。这是它以前的工作方式,但我不知道它为什么不起作用。任何帮助,将不胜感激。
答
也许我在这里错过了一些东西,但难道你不能只是改变你的SQL到以下?
Select empSal from Emp_Master where empID = '&1'; -- not &2
exit
你只提供一个参数值到您的SQL * Plus脚本,所以这也许并不奇怪,在SQL * Plus正在努力寻找&2
的值。
可能重复这个http://stackoverflow.com/questions/17575321/how-to-pass-variable-from-shell-script-to-sqlplus – 2015-04-02 11:54:41