IBX->TIBSQL: странный Dynamic SQL Error

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

IBX->TIBSQL: странный Dynamic SQL Error

Сообщение wofs » 09.12.2017 21:56:59

Доброго вечера!
Пытаюсь выполнить через TIBSQL запрос (текст из сохраненного SQL.Text):
Код: Выделить всё
create or alter procedure GETPARENTS_GROUP_CATALOG ( ID integer)  returns (  BREADCRUMPS varchar(6000),  CID integer,  PARENTID integer,  NAME varchar(30))  as  declare variable VARBREADCRUMPS varchar(6000);  BEGIN  varbreadcrumps = '';  WHILE (:ID > 0) DO         BEGIN  SELECT G.ID, G.IDPARENT, G.NAME  FROM "GROUP-CATALOG" G  WHERE G.ID = :ID  INTO :CID, :PARENTID, :NAME;  varbreadcrumps = NAME||'\'||varbreadcrumps;  breadcrumps = varbreadcrumps;  ID = :PARENTID;         END  SUSPEND;  END

В коде это выглядит так:
Код: Выделить всё
SQL.Text:= 'create or alter procedure GETPARENTS_GROUP_CATALOG ('
         +' ID integer) '
         +' returns ( '
         +' BREADCRUMPS varchar(6000), '
         +' CID integer, '
         +' PARENTID integer, '
         +' NAME varchar(30)) '
         +' as '
         +' declare variable VARBREADCRUMPS varchar(6000); '
         +' BEGIN '
         +' varbreadcrumps = ''''; '
         +' WHILE (:ID > 0) DO '
         +'        BEGIN '
         +' SELECT G.ID, G.IDPARENT, G.NAME '
         +' FROM "GROUP-CATALOG" G '
         +' WHERE G.ID = :ID '
         +' INTO :CID, :PARENTID, :NAME; '
         +' varbreadcrumps = NAME||''\''||varbreadcrumps; '
         +' breadcrumps = varbreadcrumps; '
         +' ID = :PARENTID; '
         +'        END '
         +' SUSPEND; '
         +' END   ';


И получаю ответ:
Код: Выделить всё
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1, column 349
?

В позиции 349 стоит слово INTO
Но самое интересное, что в IBExpert запрос (просто взял текст из SQL.Text, сохраненного в файл) выполняется без каких либо проблем:
2017-12-09_21-45-44.png


Прошу помощи разобраться в ситуации..

Пример проекта привести проблематично...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
wofs
постоялец
 
Сообщения: 371
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань

Re: IBX->TIBSQL: странный Dynamic SQL Error

Сообщение *Rik* » 09.12.2017 23:13:51

IBX какие? Если мои, то попробуйте выполнить этот запрос через TIBSQL.
IBSQL1.Transaction.StartTransaction;
IBSQL1.ExecQuery;
IBSQL1.Transaction.Commit;
ps. Галочку ParamCheck надо снять.

У меня Ваша процедура создается, только я SELECT из своей таблицы делал.
Через TIBQuery тоже работает, только проблема в том, что там параметры все время парсятся, не смотря на ParamCheck = False.
С TIBQuery перед выполнением запроса:
IBQuery1.Params.Clear;
Потом посмотрю почему так происходит..
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 369
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: IBX->TIBSQL: странный Dynamic SQL Error

Сообщение wofs » 10.12.2017 01:18:38

*Rik* писал(а):IBX какие? Если мои, то попробуйте выполнить этот запрос через TIBSQL.

Да, ваши - очень удобно, спасибо за ваш труд. Через TIBSQL и делал.
Проблема была в :
*Rik* писал(а):Галочку ParamCheck надо снять.

Компоненты создаю динамически, поставил в свое время
Код: Выделить всё
ParamCheck := true;

При
Код: Выделить всё
ParamCheck := false;

Все работает.
Спасибо!!!
Аватара пользователя
wofs
постоялец
 
Сообщения: 371
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru