powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Database Comparer Error
16 сообщений из 16, страница 1 из 1
Database Comparer Error
    #39702153
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При сравнении баз в логе есть вот такое:
Код: plaintext
1.
2.
3.
4.
Parsing database object definitions...
==== Error ==== : EduPlan: Missing: <)> (<(>)
                  Script:  Line:548 Pos:49
Linking dependencies...

Такая ошибка когда в запросе к селективной процедуре из этого же пакета указано имя пакета
Код: sql
1.
2.
3.
for select
    ...
from EduPlan.ProcedureName(...)



Если убрать EduPlan , то ругани нет.

При компиляции пакета ошибок нет.
...
Рейтинг: 0 / 0
Database Comparer Error
    #39702158
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже что я поспешил с выводом
slay2012Такая ошибка когда в запросе к селективной процедуре из этого же пакета указано имя пакета

Ошибка есть даже в случае если процедура из другого пакета.

В логе только первая ошибка, все дальнейшие даже в других пакетах уже не показываются...

Тогда еще вопрос - если в логах есть ошибки, то все ли различия в базах будут найдены или только то что до ошибки?
...
Рейтинг: 0 / 0
Database Comparer Error
    #39702206
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012Ошибка есть даже в случае если процедура из другого пакета.

В логе только первая ошибка, все дальнейшие даже в других пакетах уже не показываются...

Тогда еще вопрос - если в логах есть ошибки, то все ли различия в базах будут найдены или только то что до ошибки?

Различия-то будут найдены, а вот скрипт не факт что корректным будет. Парсер зависимости ищет, а если он обломался, то какие-то зависимости могут быть не обнаружены.
...
Рейтинг: 0 / 0
Database Comparer Error
    #39702210
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у меня не воспроизводится проблема.
Вот на таком пакете парсер не ругается:

Код: plsql
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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
SET TERM ^ ;

CREATE OR ALTER PACKAGE MYPACKAGE
AS
begin
  procedure GetData()
  returns (
    id integer
  );
end^

RECREATE PACKAGE BODY MYPACKAGE
AS
BEGIN
  function some_func (
    InValue integer)
  returns INTEGER
  /* just a comment */
  as
  begin
    RETURN InValue * 2;
  end

  PROCEDURE GETINNERDATA
  RETURNS (
    ID INTEGER
  )
  AS
  DECLARE VARIABLE I INTEGER = 1000;
  BEGIN
    WHILE (I > 0) DO
    BEGIN
      ID = I;
      SUSPEND;
      I = I - 1;
    END
  END

  PROCEDURE GETDATA
  RETURNS (
    ID INTEGER
  )
  AS
  BEGIN
    id = some_func(4);
    FOR SELECT ID
        FROM MYPACKAGE.GETINNERDATA
        INTO :ID
    DO SUSPEND;

    FOR SELECT ID
        FROM "MYPACKAGE".GETINNERDATA
        INTO :ID
    DO SUSPEND;

    FOR SELECT ID
        FROM getinnerdata
        INTO :ID
    DO SUSPEND;
  END

END
^

SET TERM ; ^

...
Рейтинг: 0 / 0
Database Comparer Error
    #39702248
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Параметры еще нужны

Код: sql
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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
SET TERM ^ ;

CREATE OR ALTER PACKAGE MYPACKAGE
AS
begin
  procedure GetData()
  returns (
    id integer
  );
end^

RECREATE PACKAGE BODY MYPACKAGE
AS
BEGIN
  function some_func (
    InValue integer)
  returns INTEGER
  /* just a comment */
  as
  begin
    RETURN InValue * 2;
  end

  PROCEDURE GETINNERDATA(a int)
  RETURNS (
    ID INTEGER
  )
  AS
  DECLARE VARIABLE I INTEGER = 1000;
  BEGIN
    i = a;
    WHILE (I > 0) DO
    BEGIN
      ID = I;
      SUSPEND;
      I = I - 1;
    END
  END

  PROCEDURE GETDATA
  RETURNS (
    ID INTEGER
  )
  AS
  BEGIN
    id = some_func(4);
    FOR SELECT ID
        FROM MYPACKAGE.GETINNERDATA(4)
        INTO :ID
    DO SUSPEND;

    FOR SELECT ID
        FROM "MYPACKAGE".GETINNERDATA(:id)
        INTO :ID
    DO SUSPEND;

    FOR SELECT ID
        FROM getinnerdata(5)
        INTO :ID
    DO SUSPEND;
  END

END
^

SET TERM ; ^


...
Рейтинг: 0 / 0
Database Comparer Error
    #39702442
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дублирую сюда...

Я так понял, что исправлено, потому как начало ругаться на отсутствие into (используется as cursor)
Код: plaintext
1.
2.
3.
Parsing database object definitions...
==== Error ==== : EduProtocol: Missing: INTO (AS)
Script:  Line:317 Pos:8
Код: sql
1.
2.
3.
4.
5.
for select
    ...
from ...
as cursor cur
do ...
...
Рейтинг: 0 / 0
Database Comparer Error
    #39702652
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012,

вообще-то в 3.0 если есть as cursor cur, то into можно и не использовать
...
Рейтинг: 0 / 0
Database Comparer Error
    #39702745
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисslay2012,

вообще-то в 3.0 если есть as cursor cur, то into можно и не использовать

Я в курсе, а вот парсер эксперта похоже что нет :)
...
Рейтинг: 0 / 0
Database Comparer Error
    #39724559
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
slay2012начало ругаться на отсутствие into (используется as cursor)
Код: plaintext
1.
2.
3.
Parsing database object definitions...
==== Error ==== : EduProtocol: Missing: INTO (AS)
Script:  Line:317 Pos:8
Код: sql
1.
2.
3.
4.
5.
for select
    ...
from ...
as cursor cur
do ...



Есть надежда, что это пофиксится?
...
Рейтинг: 0 / 0
Database Comparer Error
    #39724751
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012Есть надежда, что это пофиксится?

По "примеру" с тремя многоточиями? Вряд ли.
...
Рейтинг: 0 / 0
Database Comparer Error
    #39724787
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример с многоточиями действительно не корректный...

Вот:
Код: sql
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.
46.
47.
SET TERM ^ ;

CREATE OR ALTER PACKAGE TEST2
AS
begin

function TEST_CURSOR2 (
    A integer,
    B integer)
returns integer;


end^

RECREATE PACKAGE BODY TEST2
AS
begin

function TEST_CURSOR2 (
    A integer,
    B integer)
returns integer
AS
declare variable r int;
begin
    r = 0;
    for with
        res_a as (
            select
                t.a
            from test_table t
            where t.id between :a and :b
        )
    select
        a.a
    from res_a a
    as cursor c
    do begin
        r = r + c.a;
    end
    return r;
end

end
^

SET TERM ; ^


Получаем:
Код: plaintext
1.
2.
3.
Parsing database object definitions...
==== Error ==== : TEST2: Missing: INTO (AS)
                  Script:  Line:21 Pos:8
...
Рейтинг: 0 / 0
Database Comparer Error
    #39725470
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил.
...
Рейтинг: 0 / 0
Database Comparer Error
    #39725538
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpertИсправил.
Спасибо!

Заводить новую тему не буду, продолжим тут:
Код: sql
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.
CREATE TABLE TEST_TM (
    ID    INTEGER GENERATED BY DEFAULT AS IDENTITY,
    ATTR  INTEGER,
    OBJ   INTEGER,
    V     INTEGER
);

create procedure test_merge (
    attr_id int,
    obj_id int,
    v int
)
returns (
    id int)
as
begin
    merge into test_tm t
    using (
        select
            :attr_id as a,
            :obj_id as o,
            nullif(:v, 0) as v
        from rdb$database
    ) s
    on t.attr = s.a and t.obj = s.o
    when not matched and s.v is not null then
        insert (attr, obj, v)
        values (s.a, s.o, s.v)
    when matched and s.v is null then
        delete
    when matched and s.v <> t.v then
        update set t.v = s.v
    returning new.id into :id;
end



Код: plaintext
1.
2.
3.
Parsing database object definitions...
==== Error ==== : Procedure TEST_MERGE: Missing: <;> (RETURNING)
                  Script:  Line:18 Pos:15
...
Рейтинг: 0 / 0
Database Comparer Error
    #39726233
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012
Код: plaintext
1.
2.
3.
Parsing database object definitions...
==== Error ==== : Procedure TEST_MERGE: Missing: <;> (RETURNING)
                  Script:  Line:18 Pos:15


Исправил.
...
Рейтинг: 0 / 0
Database Comparer Error
    #39726298
slay2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
Исправил.

Спасибо!

А можно еще обновить IBEScript.exe?
...
Рейтинг: 0 / 0
Database Comparer Error
    #39726330
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
slay2012А можно еще обновить IBEScript.exe?

Обновил.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Database Comparer Error
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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