Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Как выполнить скрипт в ADO из нескольких команд?   Найти похожие ветки 

 
Карелин Артем ©   (2005-10-20 13:50) [0]

Есть к примеру скрипт, состоящий из последовательности SQL-команд, разделенных командой GO, вроде приведенной ниже.
Когда пытаюсь выполнить через метод Execute класса TADOCommand или TADOConnection, происходит исключительная ситуация. Сообщение об ошибке ругается на некорректный синтаксис около команды GO, хотя скрипт правильный.
Можно ли выполнить скрипт из нескольких команд средствами ADO?

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N"[DICT_AGENT_AD]") AND OBJECTPROPERTY(id, N"IsTrigger") = 1)
 DROP TRIGGER [dbo].[DICT_AGENT_AD]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N"[repl_table2_del]") AND OBJECTPROPERTY(id, N"IsTrigger") = 1)
 DROP TRIGGER [dbo].[repl_table2_del]
GO

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N"[repl_table2_ins]") AND OBJECTPROPERTY(id, N"IsTrigger") = 1)
 DROP TRIGGER [dbo].[repl_table2_ins]
GO


 
Nikolay M. ©   (2005-10-20 14:04) [1]

GO - не оператор T-SQL, а Batch separator, использующийся в QA. Убери его и будет счастье.


 
sniknik ©   (2005-10-20 15:42) [2]

не надо убирать, надо делить по нему на различные команды. т.к. при генерации скрипта например GO делит команды на логические блоки.
т.е. нужно писать свой "выполнитель" скриптов, по тойже логике с какой реализован Query Analyzer.


 
Nikolay M. ©   (2005-10-20 15:44) [3]


> не надо убирать, надо делить

В приведенном примере можно убрать, хуже не будет.


 
Val ©   (2005-10-20 15:46) [4]

>[2] sniknik ©   (20.10.05 15:42)
что за логические блоки? одна транзация?
в скриптах мсскл нет разделителя команды типа ";", "/" ?


 
Карелин Артем ©   (2005-10-20 15:48) [5]

В приведенном можно убрать. Хуже будет если я Create Trigger поставлю после Drop.
Надо все-таки делить.


 
sniknik ©   (2005-10-20 15:48) [6]

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


 
Nikolay M. ©   (2005-10-20 18:02) [7]


> ну, такая лафа не всегда будет

Ну дык тогда и пример надо было пошире дать.
Btw, можно не ломиться в гору, а расставить GO где следует и скормить его на вход osql.ехе.


 
Карелин Артем ©   (2005-10-20 18:11) [8]


> Nikolay M. ©   (20.10.05 18:02) [7]


> Ну дык тогда и пример надо было пошире дать.

Извиняюсь насчет непоказательного примера - особенность Карелин Артем ©  (20.10.05 15:48) [5] была открыта мной после запостения вопроса.


 
Baltika-10   (2005-10-21 01:39) [9]

procedure TForm1.Button4Click(Sender: TObject);
var
   s: String;
begin
   s := "DROP TABLE test_;"+
       "CREATE TABLE test_ (Field1 Int);"+
       "INSERT INTO test_ (Field1) VALUES (1)";
   ADOConnection1.Execute(s);
end;



Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.025 c
14-1132218594
Ega23
2005-11-17 12:09
2005.12.04
А как можно узнать, какая версия ADO установлена


3-1129585999
SkyR
2005-10-18 01:53
2005.12.04
MySQL 4.12


2-1131972329
abu
2005-11-14 15:45
2005.12.04
Свойства как элементы массива-записи


4-1128052314
Roughneck
2005-09-30 07:51
2005.12.04
Как получить полное имя запущенного файла если известен только PI


2-1132330146
angelikas
2005-11-18 19:09
2005.12.04
Ошибка при компилирование программы – связанная с Tstrings.