Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Программное удаление в Firebird [D7, XP]


Михалыч ©   (2015-12-25 12:53:00) 

Здравствуйте мастера! Помогите пожалуйста,а то нигде не могу найти живой пример нужного мне кода. Использую Firebird 2.5. Надо добавить колонку в таблицу и удалить хранимку,тригер и генератор в существующей таблице,чтобы потом с помощью скрипта создать новые. Делаю так:
try
   with DataModule1.IBQuery1 do
   begin
   Close;
   SQL.Clear;
   SQL.Add('ALTER TABLE MyTable');
   SQL.Add('ADD NewField VARCHAR(20)');
   SQL.Add('DROP PROCEDURE PROCMyTable');
   SQL.Add('DROP TRIGGER MyTable_BI');
   SQL.Add('DROP SEQUENCE GEN_MyTable_ID');
   if not Transaction.Active then Transaction.StartTransaction;
   ExecSQL;
   Transaction.Commit;
   Transaction.Active := false;
   Close;
   end;
 except
   on E: Exception do
   begin
   if DataModule1.IBQuery1.Active then DataModule1.IBQuery1.Transaction.Rollback;
   Application.MessageBox(PChar(E.Message), 'Ошибка', MB_ICONERROR);
   end;
 end;
Получаю ошибку выполнения в программе:"Tokеn unknown DROP!"
Что делаю не так?


Кщд   (2015-12-28 11:38:00) [1]

>macrodens ©   (28.12.15 09:43) [5]
одно дело разово ступить, прочитать документацию и осознать
совсем другое - воинственно упорствовать в своем заблуждении

надеюсь, не затруднит привести пример рабочего кода, в котором с помощью TIBQuery выполняется скрипт?


macrodens   (2015-12-28 09:43:00) [2]


Кщд ©   (28.12.15 07:14) [4]
вероятно, документацию надо читать прежде, чем давать странные советы


Ну так а что же вы ее не читаете?
То что вы предложили в [2], вполне уместно, однако, у ТС в SQL коде есть и другая ошибка - ";" после каждого оператора поставить нужно.


Кщд   (2015-12-28 07:14:00) [3]

>macrodens ©   (27.12.15 13:40) [3]
вероятно, документацию надо читать прежде, чем давать странные советы


macrodens   (2015-12-27 13:40:00) [4]

Точно не уверен (нет сейчас огнептица под рукой, только мускул), но вероятно, что точку с запятой поставить необходимо после каждого действия


Михалыч   (2015-12-25 13:22:00) [5]

А без написания и выполнения скрипта напрямую из программы нельзя?
Или надо сменить Query на IBScript в коде?


Кщд   (2015-12-25 13:15:00) [6]

Михалыч   (25.12.15 12:53)  
доку надо чтить
TIBScript


Наверх

Титульная страница Поиск, карта сайта Написать письмо