使用批处理文件循环访问Oracle SQL脚本
问题描述:
我有两个SQL脚本,它们在接受数字参数的循环中调用。这是我目前使用的:使用批处理文件循环访问Oracle SQL脚本
for /l %%i in (1, 1, 51) do (
sqlplus u/[email protected] @script.sql a%%i.html %%i
sqlplus u/[email protected] @script.sql b%%i.html %%i
)
一切工作正常,但它似乎是浪费时间和资源连接两次,每次通过。有没有办法可以简单地登录到sqlplus,运行for循环,然后退出?我试过很多替代品,如把
sqlplus u/[email protected]
前
for循环,但随后它将在SQL>提示符下简单地挂不执行任何我的两个脚本。
谢谢。
答
您可以创建一个包含您的两个script.sql语句的masterscript.sql。 我不确定的唯一事情是它是否会传入变量。
MasterScript.sql将包含:
@@script1.sql
@@script2.sql
既不你的子脚本应包含退出。
Differences between "@" and "@@":
http://www.orafaq.com/wiki/SQL * Plus_FAQ#What_is_the_difference_between_.40_and_.40.40.3F
答
尝试这个
( 回声@%查询%的用户 )
| sqlplus username/password @(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(Host = XX.XX.XX.XX)(Port = 152X))(CONNECT_DATA =(SID = ABC)))