Сайт Макса Пантюхина

Главная
Обо мне
Ссылки
Фотографии
SQL и не только
Резюме
Предыдущая
Следующая
Р - значит ракета

      

      

Ветвление в SQLPlus.

Тут надо было мне написать скрипт, накатывающий изменения в таблицах на базу, находящуюся в промэксплуатации. Причем нужно было сделаь так, чтобы скрипт во-первых, останавливался при любой ошибке, а во-вторых, его можно было бы запускать многократно.

Структуру новых таблиц я выгрузил в скрипты при помощи PL/SQL Developer. По этому, хотелось бы использовать эти скрипты без изменений. Во первых, потому что лень, а во-вторых, эти же скрипты можно было бы тогда использовать в PowerDesigner, который имеет операцию реинженеринга.

Правда, если эти скрипты запустить повторно, то установка свалится по ошибке, (так как такая таблица уже будет существовать). Я знал только один способ это обойти.
Вот такой:

declare
   b number;
begin
   select count(*)
    
into b
     from all_tables
    
where table_name = ....;
    
    if b > 0 then
       execute immediate 'create table .....';
    end if;

end;

Да спасибо, добрые люди на sql.ru помогли. Вот, оказывается как можно организовать ветвление на SqlPlus:

col script new_val script
def script = "nop.sql"
-- nop.sql - скрипт, который ничего не делает,
-- или делает то, что нужно когда условие для запуска
-- основного сценария (do.sql) не выполнено

select 'do.sql' script
  from dual
 where <условие>;

prompt call &script
-- Запускаем нужный сценарий
@&script

 

 

 

 

Hosted by uCoz