使用 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 脚本的主要内容,如果未能解决你的问题,请参考以下文章