victor_r
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Вопрос по FB 2.5 superserver. Выполняю скрипт который бежит по ряду архивных баз и изменяет структуру базы. Из-за ряда причин (выключился свет на клиенте) в одних базах скрипт выполнился успешно, а в других нет. Как мне продолжить выполняться скрипт в нужном мне месте если я заранее не знаю где модификация прошла успешно, а где нет? Ведь отлова ошибок из скрипта нет и не предвидится. Код: execute block returns( city varchar(20), a_path varchar(512), a_serv varchar(512) ) as declare a_per int; declare auser varchar(35); declare apass varchar(35); declare SQL_1 varchar(8196); declare SQL_2 varchar(8196); declare CQ varchar(1); declare CR varchar(1); declare LF varchar(1); declare A_NAME varchar(50); declare arch_id int; declare arch_per varchar(6); declare arch_server varchar(1024); declare path_archiv varchar(512); begin CQ = ASCII_CHAR(39); CR = ASCII_CHAR(13); LF = ASCII_CHAR(10); auser='SYSDBA'; apass='пароль'; SQL_1='CREATE DOMAIN D_INT AS INTEGER'; SQL_2='ALTER TABLE E_CONT ADD CONTSTR VARCHAR(12) COLLATE WIN1251_UA'; -- for SELECT FIRST 1 'D:\DATA\Work1\', 'Work1' FROM MON$DATABASE UNION ALL SELECT FIRST 1 'D:\DATA\Work2\', 'Work2' FROM MON$DATABASE into :path_archiv, :city do begin path_archiv=trim(:path_archiv)||'archiv.gdb'; for execute statement ('select path,server from archives where Upper(per)<>'||CQ||'DEF'||CQ) ON EXTERNAL :PATH_ARCHIV AS USER :AUSER PASSWORD :APASS into :A_PATH, :A_SERV do begin -- EXECUTE STATEMENT (:SQL_1) ON EXTERNAL :A_SERV||':'||:A_PATH AS USER :AUSER PASSWORD :APASS WITH AUTONOMOUS TRANSACTION; EXECUTE STATEMENT (:SQL_2) ON EXTERNAL :A_SERV||':'||:A_PATH AS USER :AUSER PASSWORD :APASS WITH AUTONOMOUS TRANSACTION; -- SUSPEND; end end -- end | Простите за длинный код, простых не пишем, а как укоротить пост не нашел по быстрому. | Всего записей: 17 | Зарегистр. 23-11-2009 | Отправлено: 13:15 12-12-2012 | Исправлено: victor_r, 13:20 12-12-2012 |
|