我有两个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>提示没有执行我的两个脚本。
谢谢。
答案 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)))