powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ошибка запуска SQL-скрипта из Delphi
24 сообщений из 24, страница 1 из 1
Ошибка запуска SQL-скрипта из Delphi
    #34417478
Lily V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, не совсем там спрашиваю, но все-таки надеюсь на помощь.
При попытке запуска скрипта из Delphi получаю следующую ошибку:
ESDSybError with message 'Client-Library error 411: ct_res_info(): user api layer: external error: This routine cannot be called when the command structure is idle
Этот же скрипт отрабатывает в Interactive SQL без проблем.
Скрипт примерно такой:
begin
if not exists (select 1 from dba.const where short_name = 'INS_ID')
then insert into dba.const(const_id, short_name)
values (30, 'INS_ID', 'Код (из справочника)');
end if;

// дальше ALTER TABLE (добавляется колонка в таблицу)
......скип.........
end;

В Delphi текст запроса грузится из файла таким образом:
with query do
try
close; SQL.Clear;
SQL.LoadFromFile(search_path + sr.Name);
open;
except
Memo.Lines.Add('Ошибка исполнения скрипта');
end;
Помогите, пожалуйста, разобраться, в чем ошибка.

info: ASA 8.0.2.4424, Delphi v.7
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34417622
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вы работаете с АСА - переходите на ODBC
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34417699
Lily V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зачем? Я использую компоненты SQLDirect, которые предназначены для доступа к базам данных, в том числе и ASA.
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34418285
Lily V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
других вариантов (ответов) нет?
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34418377
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lily V. wrote:

> других вариантов (ответов) нет?

Вряд ли кому-то интересны подробности интимной жизни не очень известного
набора компонент, работающего с ASA через OSG.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34418647
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ct_res_info()
это явно клиент для ASE не для ASA
вроде-бы это не страшно т.к. должно работать.
но эта ошибка значит что с базой ваша компонента работает неверно

для инфы: ODBC более родной для ASA чем ASE клиент
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34418911
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry. wrote:

> ct_res_info()
> это явно клиент для ASE не для ASA

Ну так на сайте в ФАКе написано, что с ASA оно работает через OSG - т.е.
ASA маскируется под ASE.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34420249
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lily V.
Скрипт примерно такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
begin
if not exists (select  1  from dba.const where short_name = 'INS_ID')
then insert into dba.const(const_id, short_name)
values ( 30 , 'INS_ID', 'Код (из справочника)');
end if;

// дальше ALTER TABLE (добавляется колонка в таблицу)
......скип.........
end;
...
Код: plaintext
1.
2.
SQL.LoadFromFile(search_path + sr.Name);
open;

В VCL'евском TQuery:
1. Можно выполнить только одну SQL команду.
2. не open , а ExecSQL (раз уж у Вас ALTER)
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34420345
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft
В VCL'евском TQuery:
1. Можно выполнить только одну SQL команду.
2. не open , а ExecSQL (раз уж у Вас ALTER)

не совсем так, если сделать
Код: plaintext
1.
insert into ...;
select @@identity
то можно делать Open
имхо последним должен быть select ...
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34420610
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марсель
если сделать
Код: plaintext
1.
2.
insert into ...;
select @@identity

Ex_Soft
В VCL 'евском TQuery :
1. Можно выполнить только одну SQL команду.

Код: plaintext
1.
2.
3.
4.
Query1->SQL->Clear();
Query1->SQL->Add("insert into MasterTable (Value) values ('10');");
Query1->SQL->Add("select @@identity");
Query1->Open();
EDBEngineError
General SQL error.
Incorrect syntax near ';'.

_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34420827
Марсель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас там все такие крикливые?
лично у меня в D6, D7 все работает
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34420853
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Марсель
лично у меня в D6, D7 все работает

если не трудно - код покажите, pls...

P.S. BCB6+Upg4
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34421010
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I'm so sorry...
Перепутал
Lily V.
Я использую компоненты SQLDirect

с SQL-Links
...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34421065
Lily V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за разъяснения. теперь понятно, в чем дело
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34429218
Фотография Анатолий Иванов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftВ VCL'евском TQuery:
1. Можно выполнить только одну SQL команду.

А вот это не правда. Если не используются параметры - то можно.
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34429743
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Иванов
Если не используются параметры - то можно.

Приведите, пожалуйста, кусочек кода.
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34430262
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TQuery не анализирует и не исполняет SQL, а просто передает провайдеру. Поэтому от провайдера зависит - будет исполняться Script или только одиночный SQL. Как правило, если работать через провайдер, который установлен клиентом базы данных, скрипты исполняются.
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34430625
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну к чему этот софизм? Возьмите, попробуйте и приведите рабочий код.

2moderator
Все оффтоповые посты по поводу компоненты, IMHO, можно перенести, 4 example, сюда ...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34431222
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftНу к чему этот софизм? Возьмите, попробуйте и приведите рабочий код.
и правда, к чему... через ODBC-драйвер от Sybase стандартный TQuery действительно выполняет скрипты, но только не содержащие параметров.
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34431872
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Прописываю в ODBC в User DSN TestSybaseByODBC (Sybase ASE ODBC Driver (x:\sybase\ODBC\SYODASE.DLL ver. 04.20.0015))
2. Бросаю на форму
- TDatabase
- TSession
- TQuery
3.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
void __fastcall TDataBases::DataModuleCreate(TObject *Sender)
{
   try
   {
      Database->AliasName="TestSybaseByODBC";
      Database->Params->Clear();
      Database->Params->Add("HOST NAME=localhost");
      Database->Params->Add("SERVER NAME=TEST_SRV");
      Database->Params->Add("DATABASE NAME=testdb");
      Database->Params->Add("USER NAME=sa");
      Database->Params->Add("PASSWORD=");
      Database->DatabaseName="testdb";
      Database->LoginPrompt=false;

      Session1->SessionName="TestSession";
      Database->SessionName=Session1->SessionName;

      Database->Open();
      if(Database->Connected)
      {
         Query1->DatabaseName="testdb";
         Query1->SessionName=Session1->SessionName;

         Query1->SQL->Clear();
         Query1->SQL->Add("if not exists (select 1 from sysobjects where (id=object_id('TestTable')) and (type='U')) create table TestTable(ID numeruc(18) identity, Name varchar(256) null) lock datarows with identity_gap=10");
         Query1->SQL->Add("go");
         Query1->SQL->Add("insert into TestTable (Name) values ('Иванов Иван Иванович')");
         Query1->SQL->Add("go");
         Query1->ExecSQL();
      }
   }
   catch(EDBEngineError &eException)
   {
      ShowMessage("EDBEngineError: Message=\""+eException.Message+"\"");
   }
   catch(EDatabaseError &eException)
   {
      ShowMessage("EDatabaseError: Message=\""+eException.Message+"\"");
   }
   catch(Exception &eException)
   {
      ShowMessage("Exception: Message=\""+eException.Message+"\"");
   }
}
//---------------------------------------------------------------------------
EDBEngineError
General SQL error.
[DataDirect][ODBC Sybase Wire Protocol driver][SQL Server]Incorrect syntax near 'go'.

Аналогично, если go убрать и вместо него ;
Научите, покажите, подправьте...

P.S. BCB6+Upg4 w2k+sp3
P.P.S. select @@version
Adaptive Server Enterprise/12.5.1/EBF 11428/P/NT (IX86)/OS 4.0/ase1251/1823/32-bit/OPT/Wed Sep 17 11:10:54 2003


_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34432106
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft1. Прописываю в ODBC в User DSN TestSybaseByODBC (Sybase ASE ODBC Driver (x:\sybase\ODBC\SYODASE.DLL ver. 04.20.0015))
вообще-то мы про ASA говорим.
смотрите первый пост топика.
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34432113
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если убрать и go и ; ? с точки зрения TSQL это будет корректный скрипт
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34432359
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гм...
действительно
Код: plaintext
1.
2.
3.
4.
5.
Query1->SQL->Clear();
Query1->SQL->Add("if not exists (select 1 from sysobjects where (id=object_id('TestTable')) and (type='U')) create table TestTable(ID numeric(18) identity, Name varchar(256) null) lock datarows with identity_gap=10");
Query1->SQL->Add("insert into TestTable (Name) values ('Иванов Иван Иванович')");
Query1->SQL->Add("insert into TestTable (Name) values ('Петров Петр Петрович')");
Query1->ExecSQL();
отработало...
Но при запуске во второй раз
EDBEngineError
General SQL error.
[DataDirect][ODBC Sybase Wire Protocol driver][SQL Server]There is already an object named 'TestTable' in the database.

Значит к if 'у отнеслись положительно (производная от слова "положить"
)
Резюмируя все: получается, таки, действительно можно выполнить несколько команд, но, по крайней мере, исходя из произведенного опыта, с логическими операторами в скрипте возникают грабли.
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
Ошибка запуска SQL-скрипта из Delphi
    #34432529
Фотография A.K.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С ASA при использовании связки SQL Links-ODBC на D5 без проблем отрабатывает:
Код: plaintext
1.
2.
3.
Query1.SQL.Text := 'if not exists (select 1 from SYSTABLE where table_name=''A_A_TEST1'') '# 13 +
  'create table A_A_TEST1(id int not null primary key)';
Query1.ExecSQL();
Хотя сама идея использовать такую связку - вещь безусловно тухлая.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ошибка запуска SQL-скрипта из Delphi
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]