使用批处理文件循环访问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)))