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

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

TADOCommand не нравится GO, почему?


Страницы:   1 2

Kolan ©   (2007-12-10 17:12:00) 

Здравствуйте,
 Странно

Вот такой код:
procedure TDataAccessFacade.RunScript(ASQL: TStrings);
var
 Query: TADOCommand;
begin
 if Assigned(ASQL) then
 begin
   Query := TADOCommand.Create(nil);
   try
     with Query do
     begin
       Connection := FDBConnection;
       CommandText := ASQL.Text;
       Execute;
     end;
   finally
     Query.Free;
   end;
 end;
end;


Вот такой скрипт:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_T_TALON_T_SL_BRIG]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[T_TALON] DROP CONSTRAINT FK_T_TALON_T_SL_BRIG
GO


Говорит Incorrect syntax near GO.  Странно, почему?


Kolan   (2007-12-11 17:41:00) [1]

> 19] Anatoly Podgoretsky ©   (11.12.07 16:38)

Порезал на куски — проверяю.


Kolan   (2007-12-11 17:41:00) [2]

>
> Эта программа была оставлена в 2000 для совместимости со
> старыми версиями, там много может быть проблем, например
> с Юникодом.
> Лучше бы сделал как тебе советовали разборщик пакета по
> GO

Понял, если успею сделаю.


> [17] ANB ©   (11.12.07 16:36)

Блин а оно то и не работает:

В консоль вываливаются такие штуки:
1> 2> 3> 1> 2> 3> 4>

Итд. Много. Я думал это он работает, оказалось — нет.


Anatoly Podgoretsky   (2007-12-11 16:38:00) [3]

> Kolan  (11.12.2007 15:59:14)  [14]

Эта программа была оставлена в 2000 для совместимости со старыми версиями, там много может быть проблем, например с Юникодом.
Лучше бы сделал как тебе советовали разборщик пакета по GO


Kolan   (2007-12-11 16:37:00) [4]

> Кстати, пример для кмд.экзе для ИСКЛ не прокатывает.

разница в чем?


ANB   (2007-12-11 16:36:00) [5]


> http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&id=1197376680
>
> :)

Та дома где то пример валяется. Я как раз тоже через ИСКЛ скрипты гонял.
Кстати, пример для кмд.экзе для ИСКЛ не прокатывает.


Kolan   (2007-12-11 16:32:00) [6]

>
>
> [8] ANB ©   (10.12.07 18:54)
>
> искл будет лучше всего. особливо если вывод перехватить.


http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&id=1197376680

:)


ANB   (2007-12-11 16:28:00) [7]


> Это самое плохое, что можно было сделать.

Я бы не сказал. ИСКЛ умеет несколько побольше АДО и эти фичи замучаешься ручками обрабатывать. Некоторые скрипты, написанные под штатные скриптогонялки, быстрее в них же и выполнять.


Kolan   (2007-12-11 15:59:00) [8]

> Это самое плохое, что можно было сделать.

Почему?


Anatoly Podgoretsky   (2007-12-11 15:54:00) [9]

Это самое плохое, что можно было сделать.


Kolan   (2007-12-11 14:21:00) [10]

Все, заюзал isql. Всех благодарю.


Павел Калугин   (2007-12-11 13:41:00) [11]

как сказано выше go это разделитель команд.
Если мне не изменяет память, то что отдается в ado исполняется процедурой sp_executesql. Следовательно надо смотреть ее описание.

Я данный вопрос обошел проще.
грузил скрипт в stringlist и сам рубил его на комманды по go


ANB   (2007-12-10 18:59:00) [12]


> Не мне наоборот запустить потихому, чтобы отработало и се…
> Понял так наверно и сделаю.

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


Kolan   (2007-12-10 18:57:00) [13]

>
> искл будет лучше всего. особливо если вывод перехватить.

Не мне наоборот запустить потихому, чтобы отработало и се… Понял так наверно и сделаю.


ANB   (2007-12-10 18:54:00) [14]


> Ясно. Подумаю, мож проше утилиткой isql сделать…

искл будет лучше всего. особливо если вывод перехватить.
заодно и приедет все, что надо


Kolan   (2007-12-10 18:46:00) [15]

> Го — это разделитель команд. И выкидывать/комментарий его
> низзя. Теж написали — надо искать го в тексте, пилить скрипт
> на куски и кусками выполнять.

Ясно. Подумаю, мож проше утилиткой isql сделать…


ANB   (2007-12-10 18:21:00) [16]

Го - это разделитель команд. И выкидывать/комментарий его низзя. Теж написали - надо искать го в тексте, пилить скрипт на куски и кусками выполнять.


Kolan   (2007-12-10 18:11:00) [17]

> и где разделители команд?


> [1] DiamondShark ©   (10.12.07 17:21)
> Потому что ГО —— это не команда SQL. Это разделитель пачек
> команд для isql

:)


> это чево такое?

Это квери аналайзером выгружено.


Правильный_Вася   (2007-12-10 18:09:00) [18]


> ) ON [PRIMARY]

это чево такое?
и где разделители команд?


stone   (2007-12-10 17:32:00) [19]

А на сервак что идет? Посмотри в профайлере.


Kolan   (2007-12-10 17:27:00) [20]

Ясно. А Create же должен катить?

Закоментил все ГОУ.

Теперь Incorrect syntax near keyword CREATE.
Строчку не сообщает. В Query Analizer  скрипт работает.


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_TALON]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[T_TALON]
--GO

CREATE TABLE [dbo].[T_SL_BRIG] (
[ID] [int] NOT NULL ,
[STATION_ID] [int] NULL ,
[SOST] [varchar] (250) COLLATE Cyrillic_General_CI_AS NULL ,
[NAME] [varchar] (100) COLLATE Cyrillic_General_CI_AS NULL ,
[ID_DOCT] [int] NULL ,
[ID_FEL] [int] NULL ,
[ID_VOD] [int] NULL ,
[ID_SAN] [int] NULL
) ON [PRIMARY]
--GO


Страницы:   1 2

Наверх

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