Возвращение таблицы для множественного выбора UNION, помещенного в массив - PullRequest
0 голосов
/ 08 февраля 2019

Я хочу использовать отфильтрованные данные из сценария SQL и использовать его для запуска обновления в БД, используя отфильтрованный список для обновления.

1) У меня есть файл SQL, который ежедневно меняется и выглядит следующим образом:

select 
'OBJECT1' object_name, 
'PACKAGE BODY' object_type, 
'999999' target_vers, 
(Select statement which finds current version),
Decode (decode which comperes target version and current version) status 
from DUAL union

select (те же 5 столбцов) .. ... ..

Может достигать 100+ вариантов выбора

2) Я хочу использовать только записи таблицы, целевая версия которых> текущая версия (иногда целевой версией может быть <текущая версия) </p>

3)Имя объекта соответствует каталогу .code, в котором находится соответствующий sql, view, pks.

4) После отфильтрованного шага я хочу запустить этот файл sql на сервере базы данных (похоже, что это нужно сделать в цикле).

5), поскольку я новичок в cmd /пакет не уверен, как это сделать.

for /f  %%k in ('sqlplus -s %LOGIN%/%LOGIN%@%DBSERVER% @%SCRIPTPATH%\CHECK_CODE.sql') do (
set theValue=%%k
)      

Приведенный выше код запускает упомянутый выше файл sql,

spool new.txt 
select ...... 
spool off 
/ 
exit 

Это возвращает приведенный ниже текстовый файл

OBJECT_NAME                 OBJECT_TYPE  TARGE                                  
--------------------------- ------------ -----                                  
INSTALLED_VERS                                                                  
--------------------------------------------------------------------------------
STATUS                                                                          
-------------------------                                                       
OBJECT_NAME              PACKAGE BODY 72021                                  
72021                                                                           
--- INSTALLED ---                                                               

Теперь я хотел бы сделатьЦикл только через необходимые объекты для обновления БД.

for /f  %%a in ('List of entries which need upgrade') 
do (
sqlplus -s %LOGIN%/%LOGIN%@%DBSERVER% @%%a.[object_name].[object extension]
)        

Вопрос в том, как я могу получить отфильтрованные данные из первого сценария SQL в массив в CMD, который затем использовал бы их для запуска файлов SQL (которые идентичны имя_объекта)

...