使用 sqlplus 命令在批处理文件中执行 sql 脚本

Posted

技术标签:

【中文标题】使用 sqlplus 命令在批处理文件中执行 sql 脚本【英文标题】:Execute sql script in batch file with sqlplus command 【发布时间】:2015-10-28 16:21:08 【问题描述】:

我想从批处理文件中执行 PL/SQL 脚本。经过一番研究,我写了这个:

sqlplus.exe %user%/%pwd%@%db% @c:\users\NDL\SQL\MHUHMS.sql %%l

user、pwd 和 db 是之前设置的。但是在这里我必须使用一个参数执行脚本 MHUHMS.sql。似乎这行不通;它给了我一个 ORA-01017 错误,然后询问我用户和密码。当我给出与批处理文件中使用的值相同的值时,它不会执行我的脚本。

我基于 sqlcmd 版本:

SQLCMD -S touoracst01 -U %user% -P %pwd% -d %db% -v l ="%%l" -i c:\users\NDL\SQL\MHUHMS.sql

但是有一些问题:

不用我传参数-S touoracst01吗? 这是正确的转换吗?还是我做错了什么?

我不想修改 SQL 脚本,所以我希望问题只出在批处理文件中。

编辑:我像这样修改我的 sqlplus 命令

sqlplus -L %user%/%pwd%@%db% < "c:\Hardis\NDL\SQL\MHUHMS.sql" %%l

我正在连接!这部分还可以,但是好像我的pl/sql脚本调用不好,参数%%l。有我的循环:http://puu.sh/l1Kg2/f66d9c2aa7.png 如果有人可以帮助我。因为带参数的调用看起来不错....

【问题讨论】:

听起来那些 % 变量没有设置,或者无效;你怎么检查?在提示您之前您是否收到错误消息?如果您使用-l 标志,是否还会收到提示? 我在脚本开头设置了这个 %variable。是的,它告诉我无法识别登录。但是在我写了相同的用户名和密码之后,它就可以工作了。我不明白你的最后一个问题,对不起,我不是批处理文件的专家。我必须把 -l 选项放在哪里? 确切的错误信息是什么? ORA-01017,ORA-12154,还有别的吗?第二次尝试时是否包含@db 部分?将您看到的内容和所做的内容准确地添加到问题中会很有用。 好的,我添加一些屏幕来解释更多的简单文字! 我添加了文字和图片。我遇到了你说的 ORA-01017 错误 【参考方案1】:

经过大量研究,我发现了这一点:

sqlplus -L %user%/%pwd%@%db% @C:\Hardis\NDL\SQL\MHUHMS.sql "%%l"

%%l 是我循环的一个变量。谢谢大家的帮助!

【讨论】:

以上是关于使用 sqlplus 命令在批处理文件中执行 sql 脚本的主要内容,如果未能解决你的问题,请参考以下文章

cmd 执行sql脚本,该怎么处理

如何使用 .NET 执行多个 Oracle SQL 语句

使用来自查询的变量的 SQLPlus 条件执行

SQLPlus 批处理文件 - 如何返回到命令提示符?

bat 文件运行 sqlplus 然后根据结果执行命令?

获取 sqlplus 的结果并放入脚本 .bat 上的变量中