Повторно использовать то же предложение SQL в сценарии - PullRequest
0 голосов
/ 03 февраля 2019

Дело в том, что у меня есть предложение SQL внутри сценария Unix, например:

sqlplus -s user/pass << END_SQL1 >> outfile.txt
set echo off feedback off heading off tab off;
select ..... 
from ....
where ...
and ...
and ... ;
END_SQL

Если outfile.txt не пусто, что означает, что я получаю результат из приведенного выше SQL, тогда яЯ использую обновление SQL, которое должно что-то изменить в некоторых элементах БД.

Затем мне нужно повторно использовать тот же SQL, что и выше, чтобы проверить, действительно ли изменились нужные мне элементы БД.Итак, возможно ли повторно использовать тот же самый SQL, но БЕЗ включения того же самого кода SQL позже в сценарий, вместо этого, чтобы запустить его снова и, более того, даже поместить результат в другой выходной файл, например, outfile2.txt?

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019

Вы можете поместить свой волосатый запрос SELECT в файл, скажем select.sql.Тогда всякий раз, когда вам нужно запустить SQL, вы можете просто сделать:

sqlplus -s user/pass @select.sql >> outfile.txt

Вы можете адаптировать выходной файл по своему усмотрению:

sqlplus -s user/pass @select.sql >> outfile2.txt

Примечание: вы сказали

Если outfile.txt не пустой, это означает, что я получаю результат из приведенного выше SQL

Возможно, вы захотите использовать > при записи в outfile.txt: >> добавляет к файлу, а > заменяет его.

0 голосов
/ 03 февраля 2019

Вы можете использовать предложение RETURNING ... INTO ... внутри скрипта

   UPDATE myTable
      SET col1 = <something1>
    WHERE col2 = <something2>
RETURNING col3, col1 INTO v_col3, v_col1;

, чтобы вернуть результаты в переменные v_col3 и v_col1.

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