Ibexpert sql error code 104

the database experts Here we have attempted to list some of the more frequently asked questions regarding Firebird and IBExpert error messages which appear when working with IBExpert. Should you not be able to find a solution to your problem under the links provided here or elsewhere within the IBExpert documentation, please send an […]

Содержание

  1. the database experts
  2. Wrong or obsolete version
  3. IBExpert currently uses IBExpert.stg .
  4. Client library is missing or invalid
  5. ’00-2′ is not a valid integer value
  6. firebird.msg not found
  7. Error loading PlugIn Engine 12
  8. Ошибка -104 создание хранимой процедуры Firebird
  9. Ibexpert sql error code 104
  10. iBase.ru Forum
  11. Не создается индекс
  12. Не создается индекс
  13. Ошибка -104 при создании хранимой процедуры Firebird
  14. 1 ответы

the database experts

Here we have attempted to list some of the more frequently asked questions regarding Firebird and IBExpert error messages which appear when working with IBExpert. Should you not be able to find a solution to your problem under the links provided here or elsewhere within the IBExpert documentation, please send an email to register@ibexpert.biz.

Wrong or obsolete version

The incorrect ODS version has been specified for the Firebird version in use. On disc structure 11.2 is always for Firebird 2.5 and ODS version 12 is Firebird 3.0, ODS version 13 for Firebird 4.

  1. Delete the database file and recreate it again with the same DLL.
  2. use the 32-bit fbclient.dll from the Firebird 3 subdirectory.

Refer to ODS version for a list of all ODS versions for both Firebird and InterBase.

IBExpert currently uses IBExpert.stg .

If you have not specified and registered your IBExpert User database, you will receive the following error message, the first time you start IBExpert:

Please refer to the following documentation:

Client library is missing or invalid

This is actually an IBExpert errror message. As IBExpert is still currently a 32-bit application, it requires a 32-bit client dll. If you try to register a 64-bit Firebird (with the standard 64-bit fbclient.dll) in IBExpert you will get an error message informing you that the fbclient.dll is missing or invalid.

  1. Specify the 32 bit fbclient.dll from the corresponding Firebird version in the IBExpert Registration Info.
  2. When specifying the IBExpert User Database, you can specify the fbembed.dll, situated in the C:Program Files (x86)HK-SoftwareIBExpertIBEUDB subdirectory.

’00-2′ is not a valid integer value

This error appears if you are still using the old deprecated ibexpert.stg to store all your IBExpert settings. It indicates that IBExpert.stg is corrupted, cannot be repaired and user database should be used instead.

To solve this issue configure the IBExpert User Database.

If you have not specified a location yourself: by default, the user database file can always be found in the folder: HK-SoftwareIBExpertibexpert.udb. This area is user-dependent and even if several users work on one machine, each user has their own file.

If you are still using the old ibexpert.stg (default path: Documents and Settings Application DataHK-SoftwareIBExpertIBExpert.stg) then copy this. Please refer to our online documentation:

firebird.msg not found

  1. Enter the following in the IBExpert Database Registration: client library file: C:Program Files (x86)HK-SoftwareIBExpertIBEUDBfbembed.dll

Error loading PlugIn Engine 12

This error suggests that either your installation is corrupt, or the user running the Firebird service has insufficient access rights on the install folder to read /load plugins/Engine12.dll. . [. ]

Источник

Ошибка -104 создание хранимой процедуры Firebird

Я не могу запустить следующий SP

Ошибка, которую я получаю, следующая:

Вы использовали Set Term до и после этого кода?

Все команды в Firebird должны быть завершены с помощью двоеточия. Если вы хотите создать хранимую процедуру, вы должны иметь возможность различать конечную точку с запятой из полуколоний внутри хранимой процедуры.

Что-то вроде этого:

Обратите внимание, что объявление хранимой процедуры заканчивается символом ^, тем самым заканчивая утверждение. После объявления вы также восстанавливаете завершающую полуточку.

На стороне примечания, я бы рекомендовал скопировать firebird.msg в место, где ошибка, которую вы получаете, говорит вам, чтобы вы могли видеть, что на самом деле происходит.

EDIT:

Если вы хотите, вы можете проверить эту ссылку . Там вы найдете много информации о Firebird + IBExpress, включая SET TERM (стр. 81).

ИЗМЕНИТЬ 2:

Просто попробовал дома с IBExperts + Firebird, и у меня не возникло проблем с созданием хранимой процедуры. Думаю, вы пытаетесь сделать одно из следующих действий:

Вы открыли редактор SQL и пытаетесь скомпилировать код напрямую. Это не сработает, потому что IBExperts считает, что вы пытаетесь запустить предложения DSQL. Хранимые процедуры создаются с помощью предложений PSQL.

Вы пытаетесь использовать утилиту «Новая процедура» (проверить кнопки в верхней правой части главного меню) и вставить весь код в редактор. Это не сработает, потому что в этом редакторе вам нужно только поставить код тела. Имя хранимой процедуры устанавливается в поле в верхней правой части окна, которое вы открыли. Параметры и переменные вводятся с помощью кнопки «Вставить параметр/переменную» в левой части над редактором кода. Предложения SET TERM автоматически создаются IBExperts. Вы можете проверить полученный код на вкладке DDL.

Источник

Ibexpert sql error code 104

Здравствуйте мастера! В IBExpert хочу добавить хранимку в БД Firebird.
Скрипт такой:
create or alter procedure FILTR (
ZVL varchar(4),
ZPC float,
KRD float,
KRE float)
returns (
RESLT float)
as
begin
RESLT=ZPC;
if ZVL=»$» then RESLT=ZPC*KRD;
if ZVL=»Euro» then RESLT=ZPC*KRE;
suspend;
end
При компиляции получаю ошибку:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown — line 11, column 4.
ZVL.
Я так понимаю компилятору не нравится входной параметр ZVL, но он описан вначале скрипта вроде корректно. В чем трабла непойму? 🙁


sniknik © ( 2014-04-28 13:56 ) [1]

> Invalid token.
> Token unknown — line 11, column 4.
RESLT


Николька ( 2014-04-28 14:00 ) [2]

returns (
RESLT float)


RWolf © ( 2014-04-28 14:09 ) [3]

в IF условие не в скобки ли надо брать?


Николька ( 2014-04-28 14:13 ) [4]

>RWolf Да, в скобки 🙂 Спасибо БОЛЬШОЕ. Теперь компилится без проблем 😉

Источник

iBase.ru Forum

Форум по InterBase, Firebird и Yaffil

  • Темы без ответов
  • Активные темы
  • Поиск
  • Наша команда

Не создается индекс

Модераторы: kdv, CyberMax

Не создается индекс

Сообщение Karburator » 14 апр 2005, 01:26

(FB1.52, IBExpert)
Помогите,
————-
CREATE TABLE TABLE_1 (
ID INTEGER NOT NULL,
NAME INTEGER);

alter table TABLE_1 add constraint PK_TABLE_1 primary key (ID);
————-
Запись правильна, а тем не менее при попытке ее запуска выдается следующее:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown — line 24, char -1.
ALTER.

То есть индекс устанавливаться не желает, хотя в системных таблицах вообще нет никаких индексов ссылающихся таблу ITOGATTESTAT и таблы такой нет.

2я непонятка попытка создать таблу вручную завершается успешно, НО несмотря на то что формируется код точно такой как я уже указал и имя у новосозданного индекса должно быть PK_ITOGATTESTAT, в реальности формируется индекс с именем типа RDB$PRIMARYxxx.

Сообщение Karburator » 14 апр 2005, 02:57

Вот так ошибок нет, создается и табла и индекс:
CREATE TABLE table_1 (
ID INTEGER NOT NULL CONSTRAINT PK_table_1 PRIMARY KEY,
NAME VARCHAR(100) );

только индекс все равно не PK_table_1, а RDB$PRIMARYxxx.
А хотелось бы, чтобы были более вразумительные имена у индексов

Сообщение dimitr » 14 апр 2005, 08:48

Источник

Ошибка -104 при создании хранимой процедуры Firebird

Я не могу запустить следующий SP

Я получаю следующую ошибку:

задан 23 фев ’11, 18:02

1 ответы

Вы использовали Set Term до и после этого кода?

Все команды в Firebird должны заканчиваться точкой с запятой. Если вы хотите создать хранимую процедуру, вам необходимо уметь отличать завершающую точку с запятой от точек с запятой внутри хранимой процедуры.

Что-то вроде этого:

Обратите внимание, как объявление хранимой процедуры заканчивается символом ^, таким образом завершая оператор. После объявления вы также восстанавливаете завершающую точку с запятой.

Кстати, я бы порекомендовал скопировать firebird.msg в то место, о котором вам сообщает ошибка, чтобы вы могли видеть, что на самом деле происходит.

EDIT:

Если хотите, можете это проверить ссылке. Там вы можете найти много информации о Firebird + IBExpress, включая SET TERM (стр. 81).

EDIT 2:

Просто попробовал дома с IBExperts + Firebird, и у меня не было проблем с созданием хранимой процедуры. Я предполагаю, что вы пытаетесь сделать одно из следующих действий:

Вы открыли редактор SQL и пытаетесь скомпилировать код напрямую. Это не сработает, потому что IBExperts думает, что вы пытаетесь использовать предложения DSQL. Хранимые процедуры создаются с помощью предложений PSQL.

Вы пытаетесь использовать утилиту «Новая процедура» (кнопки галочки в правом верхнем углу главного меню) и вставили весь код в редактор. Это не сработает, потому что в этом редакторе вам нужно только поместить основной код. Имя хранимой процедуры задается в поле в правом верхнем углу открывшегося окна. Параметры и переменные вводятся с помощью кнопки «Вставить параметр / переменную» слева над редактором кода. Предложения SET TERM создаются IBExperts автоматически. Вы можете проверить полученный код на вкладке DDL.

Источник

Have you used Set Term before and after this code?

All commands in Firebird must be terminated with a semi-colon. If you want to create a stored procedure you need to be able to distinguish between the terminating semi-colon from the semi-colons inside the stored procedure.

Something like this:

SET TERM ^ ;

CREATE PROCEDURE SP_NYANSAT(
        FORNAVN VARCHAR(30),
        EFTERNAVN VARCHAR(30),
        ADRESSE VARCHAR(50),
        POSTNUMMER CHAR(4),
        TELEFONNUMMER CHAR(8),
        EMAIL VARCHAR(50))
    AS
    DECLARE VARIABLE ID INTEGER;
    BEGIN
      ID = GEN_ID(GEN_ANSAT_ID,1);
      INSERT INTO MYTABLE (ID, FORNAVN, EFTERNAVN, ADRESSE, POSTNUMMER, TELEFONNUMMER, EMAIL) VALUES (:ID, :FORNAVN, :EFTERNAVN, :ADRESSE, :POSTNUMMER, :TELEFONNUMMER, :EMAIL);
    END
    ^

SET TERM ; ^ 

Please notice how the declaration of the stored procedure is terminated with ^, thus ending the statement. After the declaration you also restore the terminating semi-colon.

On a side note, I would recommend to copy firebird.msg to the location the error you get tells you so you can see what is really happening.

EDIT:

If you wish you can check this link. There you can find a lot of information regarding Firebird + IBExpress, including SET TERM (page 81).

EDIT 2:

Just tried at home with IBExperts + Firebird and I had no problem creating the stored procedure. My guess is you are trying to do one of the following things:

  • You have opened an SQL editor and are trying to compile the code directly. That will not work because IBExperts thinks you are trying to run DSQL sentences. Stored procedures are created with PSQL sentences.

  • You are trying to use the «New procedure» utility (check buttons in the upper right side of the main menu) and pasted the whole code into the editor. That will not work because in that editor you only have to put the body code. Stored procedure name is set in a field on the upper right side of the window you opened. Parameters and variables are introduced by using the «Insert Parameter/Variable» button on the left side above the code editor. The SET TERM sentences are created automatically by IBExperts. You can check the resulting code in the DDL tab.

HTH

<< IBExpert FAQs | Documentation | IBExpert Replication FAQs >>

  • Wrong or obsolete version
  • IBExpert currently uses IBExpert.stg …
  • Client library is missing or invalid
  • ’00-2′ is not a valid integer value
  • Error loading PlugIn Engine 12
  • firebird.msg not found
  • Your user name and password are not defined
  • Error occurred during login, please
    check server firebird.log for details

Here we have attempted to list some of the more frequently asked questions regarding Firebird and IBExpert error messages which appear when working with IBExpert. Should you not be able to find a solution to your problem under the links provided here or elsewhere within the IBExpert documentation, please send an email to register@ibexpert.biz.

Wrong or obsolete version

 

The incorrect ODS version has been specified for the Firebird version in use. On disc structure 11.2 is always for Firebird 2.5 and ODS version 12 is Firebird 3.0, ODS version 13 for Firebird 4.

Solutions:

  1. Delete the database file and recreate it again with the same DLL.
  2. use the 32-bit fbclient.dll from the Firebird 3 subdirectory.

Refer to ODS version for a list of all ODS versions for both Firebird and InterBase.

IBExpert currently uses IBExpert.stg …

If you have not specified and registered your IBExpert User database, you will receive the following error message, the first time you start IBExpert:

Please refer to the following documentation:

  • IBExpert User database
  • ibexpert.stg
  • and below: ’00-2′ is not a valid integer value

Client library is missing or invalid

This is actually an IBExpert errror message. As IBExpert is still currently a 32-bit application, it requires a 32-bit client dll. If you try to register a 64-bit Firebird (with the standard 64-bit fbclient.dll) in IBExpert you will get an error message informing you that the fbclient.dll is missing or invalid.

Solutions:

  1. Specify the 32 bit fbclient.dll from the corresponding Firebird version in the IBExpert Registration Info.
  2. When specifying the IBExpert User Database, you can specify the fbembed.dll, situated in the C:Program Files (x86)HK-SoftwareIBExpertIBEUDB subdirectory.

’00-2′ is not a valid integer value

 

This error appears if you are still using the old deprecated ibexpert.stg to store all your IBExpert settings. It indicates that IBExpert.stg is corrupted, cannot be repaired and user database should be used instead.

To solve this issue configure the IBExpert User Database.

If you have not specified a location yourself: by default, the user database file can always be found in the folder: HK-SoftwareIBExpertibexpert.udb. This area is user-dependent and even if several users work on one machine, each user has their own file.

If you are still using the old ibexpert.stg (default path: Documents and Settings<user>Application DataHK-SoftwareIBExpertIBExpert.stg) then copy this. Please refer to our online documentation:

  • IBExpert User database
  • ibexpert.stg

firebird.msg not found

 
can't format message 13:896 -- message file C:WINDOWSSYSTEM32firebird.msg not found. Dynamic SQL Error. SQL error code = -104. Token unknown - line 32, column 7.

Solution:

  1. Enter the following in the IBExpert Database Registration: client library file: C:Program Files (x86)HK-SoftwareIBExpertIBEUDBfbembed.dll
  2. or place the firebird.msg file into the C:Windowssystem32 folder.

Error loading PlugIn Engine 12

 

This error suggests that either your installation is corrupt, or the user running the Firebird service has insufficient access rights on the install folder to read /load plugins/Engine12.dll. … [???]

Solution:

… [???]

Your user name and password are not defined

 

Solution:

…[???]

Error occurred during login, please check server firebird.log for details

 

 

back to top of page
<< IBExpert FAQs | Documentation | IBExpert Replication FAQs >>

Не создается индекс

Модераторы: kdv, CyberMax

Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Не создается индекс

(FB1.52, IBExpert)
Помогите,
————-
CREATE TABLE TABLE_1 (
ID INTEGER NOT NULL,
NAME INTEGER);

alter table TABLE_1 add constraint PK_TABLE_1 primary key (ID);
————-
Запись правильна, а тем не менее при попытке ее запуска выдается следующее:

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown — line 24, char -1.
ALTER.

То есть индекс устанавливаться не желает, хотя в системных таблицах вообще нет никаких индексов ссылающихся таблу ITOGATTESTAT и таблы такой нет.

2я непонятка попытка создать таблу вручную завершается успешно, НО несмотря на то что формируется код точно такой как я уже указал и имя у новосозданного индекса должно быть PK_ITOGATTESTAT, в реальности формируется индекс с именем типа RDB$PRIMARYxxx.


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 02:57

Вот так ошибок нет, создается и табла и индекс:
CREATE TABLE table_1 (
ID INTEGER NOT NULL CONSTRAINT PK_table_1 PRIMARY KEY,
NAME VARCHAR(100) );

только индекс все равно не PK_table_1, а RDB$PRIMARYxxx.
А хотелось бы, чтобы были более вразумительные имена у индексов


dimitr

Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение

dimitr » 14 апр 2005, 08:48

Два стейтмента надо выполнять в скриптере, а не в обычном SQL-редакторе.


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 13:01

Хорошо, а как быть с именованием первичного индекса?


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение

kdv » 14 апр 2005, 13:37

тебе же объясняют — два оператора в SQL Editor надо выполнять по очереди. Или заселектить один, нажать «выполнить» и Commit, затем заселектить второй, и опять «выполнить» и commit.

вразумительные имена индексов должны быть что при создании ПК в create table, что при alter table, если база в третьем диалекте и ты пишешь constraint consr_name primary key…


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 14:06

kdv писал(а):тебе же объясняют — два оператора в SQL Editor надо выполнять по очереди. Или заселектить один, нажать «выполнить» и Commit, затем заселектить второй, и опять «выполнить» и commit.

вразумительные имена индексов должны быть что при создании ПК в create table, что при alter table, если база в третьем диалекте и ты пишешь constraint consr_name primary key…

— я выполняю команды в редакторе скриптов. Так список команд теперь не выдает ошибки. А вот другой вопрос остался ИМЕНА новосозданных ИНДЕКСОВ все еще RDB$PRIMARYxxx. база в третьем диалекте и я пишу:
CREATE TABLE TABLE_1 (
ID INTEGER NOT NULL,
NAME INTEGER);

alter table TABLE_1 add constraint PK_TABLE_1 primary key (ID);
Вроде все правильно…


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение

kdv » 14 апр 2005, 14:08

у меня не воспроизводится. база ODS 10.1, индексы соответствуют именам constraint.


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 14:37

kdv писал(а):у меня не воспроизводится. база ODS 10.1, индексы соответствуют именам constraint.

Может есть какие-нибудь подозрения из-за чего индексы не принимают указанных имен? И еще, что такое база ODS 10.1 и где это можно посмотреть, если не секрет?
Кстати, у меня раньше индексы тоже принимали указанные имена, но не могу сказать после какого момента это изменилось. Я недавно перешел с FB 1.5 > 1.52 и IBExpert2004>IBExpert2005, если важно…

Последний раз редактировалось Karburator 14 апр 2005, 14:45, всего редактировалось 1 раз.




Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 15:18

как я понял, если я создаю базу в FB1.5, то ее версия будет ODS 10.1 ?
В таком случае у меня такая же версия
А не может быть недоразумений, из-за того что установлен IB6.5 и FB1.5 ?


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение

kdv » 14 апр 2005, 16:30

базу в чем создавал или ресторил? в IB 6.5 или FB 1.5?


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 18:48

kdv писал(а):базу в чем создавал или ресторил? в IB 6.5 или FB 1.5?

— FB 1.5
ресторил — восстанавливал? Тоже FB 1.5


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение

kdv » 14 апр 2005, 19:43

стоп-стоп!!!
надо не

Код: Выделить всё

CREATE TABLE table_1 (
ID INTEGER NOT NULL CONSTRAINT PK_table_1 PRIMARY KEY,
NAME VARCHAR(100) );

а

Код: Выделить всё

CREATE TABLE table_1 (
ID INTEGER NOT NULL, 
NAME VARCHAR(100),
CONSTRAINT PK_table_1 PRIMARY KEY (ID));

то есть, ПК или UNIQUE создавать не «по месту», а в конце create table. я уж и не помню, когда таким синтаксисом пользовался.

Кстати, только что проверил — все едино. FB 1.5, база ODS 10.1, третий диалект. Оба оператора приводят к созданию индекса PK_TABLE_1 по первичному ключу. Никаких RDB$PRIMARYxx. Могу картинку из IBExpert прислать.


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 20:19

Понял что дело в глобальном — снес IB6.5 и FB1.5 и переставил FB1.5 — теперь, блин работает как нада «№,%?;№
Спасибо за ответы :D


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение

kdv » 14 апр 2005, 21:22

вот не надо. у меня эксперимент проходил под FB 1.5 с gds32.dll от IB 7.5. Где-то ты сам накосячил. Сам понимаешь — тут все примитивно. Есть клиент, и есть сервер. Больше нету ничего. У меня на машине стоят вообще IB 6, IB 6.5, IB 7.1, IB 7.5, FB 1.0, 1.5, 2.0 — и ничего. никто никому не мешает.


Merlin

Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение

Merlin » 14 апр 2005, 21:33

kdv писал(а):вот не надо. у меня эксперимент проходил под FB 1.5 с gds32.dll от IB 7.5.

Да там дело не в gds-ке было. Он в базу лазал вообще то одним сервером, то другим и сам толком не знал, когда у него какой был запущен. Имхо там вообще полная каша, ей бы b/r сейчас сделать да потом триггера с процедурами перекомпилить все.


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 22:11

kdv писал(а):вот не надо. у меня эксперимент проходил под FB 1.5 с gds32.dll от IB 7.5. Где-то ты сам накосячил. Сам понимаешь — тут все примитивно. Есть клиент, и есть сервер. Больше нету ничего. У меня на машине стоят вообще IB 6, IB 6.5, IB 7.1, IB 7.5, FB 1.0, 1.5, 2.0 — и ничего. никто никому не мешает.

А я не утверждаю, что они друг другу мешают, возможно FB коряво встал в первый раз при инсталяции…


Karburator

Сообщения: 14
Зарегистрирован: 14 апр 2005, 01:20

Сообщение

Karburator » 14 апр 2005, 22:16

Merlin писал(а):

kdv писал(а):вот не надо. у меня эксперимент проходил под FB 1.5 с gds32.dll от IB 7.5.

Да там дело не в gds-ке было. Он в базу лазал вообще то одним сервером, то другим и сам толком не знал, когда у него какой был запущен. Имхо там вообще полная каша, ей бы b/r сейчас сделать да потом триггера с процедурами перекомпилить все.

насчет того что я вперемешку то под одним сервером лазил то под другим неверная предпосылка, через IB6.5 я стал лазить от безысходности, а до этого ни-ни
К тому же после переустановки FB в той же самой базе все стало ок. Так что дело не в каше


kdv

Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение

kdv » 15 апр 2005, 09:34

не смеши. что там может «коряво встать», если там всего-то на самом деле два файла. меня всегда умиляла фраза «переставил — заработало», в отношении IB/FB. нет там ничего такого, что могло бы не заработать. Он или не работает вообще, или работает. Почитай faq по установке, убедишься.


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

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

Доброго вечера!
Пытаюсь выполнить через 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
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
  • Профиль
  • Сайт
  • ICQ

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*
постоялец
 
Сообщения: 404
Зарегистрирован: 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
постоялец
 
Сообщения: 379
Зарегистрирован: 05.10.2009 10:16:55
Откуда: Астрахань
  • Профиль
  • Сайт
  • ICQ


Вернуться в Lazarus

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

Сейчас этот форум просматривают: Google [Bot] и гости: 21

Понравилась статья? Поделить с друзьями:
  • Iastorvd sys ошибка при установке windows 7
  • Iastoricon exe initialization error
  • Iastore sys синий экран windows 10 как исправить ошибку
  • Identifying st link variant error unsupported st link hardware variant
  • Identifier expected java ошибка