views:

3219

answers:

1

I have two SQL scripts which get called within a loop that accept a number parameter. Here is what I'm currently using:

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
)

Everything works fine, but it seems like a waste of time and resources to connect twice for each pass through. Is there a way I could simply log into sqlplus, run the for loop, then exit? I tried many alternatives such as putting

sqlplus u/p@name

before the for loop, but then it would simply hang at the SQL> prompt without executing any of my two scripts.

Thank you.

+1  A: 

You can create a masterscript.sql that contains your two script.sql statements. The only thing I'm not sure about is if it will pass in your variables.

MasterScript.sql would contain:

@@script1.sql
@@script2.sql

and neither of your sub-scripts should contain an exit.

Differences between "@" and "@@":

http://www.orafaq.com/wiki/SQL*Plus_FAQ#What_is_the_difference_between_.40_and_.40.40.3F

Brian Schmitt