Использование командного файла для циклического прохождения сценариев Oracle SQL - PullRequest
1 голос
/ 24 ноября 2008

У меня есть два сценария 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 ]

2 голосов
/ 24 ноября 2008

Вы можете создать masterscript.sql, который содержит ваши два оператора script.sql. Единственное, в чем я не уверен, так это в том, что оно передаст ваши переменные.

MasterScript.sql будет содержать:

@@script1.sql
@@script2.sql

и ни один из ваших вспомогательных сценариев не должен содержать выход.

Различия между "@" и "@@" :

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

0 голосов
/ 20 марта 2013

Попробуйте

( echo @% query% user )
| sqlplus имя пользователя / пароль @ (ОПИСАНИЕ = (АДРЕС = (ПРОТОКОЛ = TCP) (Хост = XX.XX.XX.XX) (Порт = 152X)) (CONNECT_DATA = (SID = ABC)))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...