使用批处理文件循环遍历Oracle SQL脚本

时间:2008-11-24 17:02:05

标签: batch-file sqlplus loops

我有两个SQL脚本,它们在一个接受数字参数的循环中被调用。这是我目前正在使用的:

for /l %%i in (1, 1, 51) do (
    sqlplus u/p@name @script.sql a%%i.html %%i
    sqlplus u/p@name @script.sql b%%i.html %%i
)

一切正常,但每次传递连接两次似乎浪费时间和资源。有没有办法我可以简单地登录到sqlplus,运行for循环,然后退出?我尝试了许多替代方案,例如推送

sqlplus u/p@name
在for循环之前

,但它只会挂在SQL>提示没有执行我的两个脚本。

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以创建包含两个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

答案 1 :(得分:0)

试试这个

( echo @%query%user )
| sqlplus用户名/密码@(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(Host = XX.XX.XX.XX)(Port = 152X))(CONNECT_DATA =(SID = ABC)))