powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255
4 сообщений из 4, страница 1 из 1
Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255
    #38417646
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FB 2.5. Есть вот такая ХП:
Код: 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.
CREATE OR ALTER PROCEDURE GET$CS$WS_CS_BY_REST_DAYS
RETURNS (
    ID DOM$KEY,
    COLOR_REST_DAYS DOM$SEMAPHORE,
    NAME DOM$NAME_STANDARD,
    QUANTITY D_QUANTITY)
AS
BEGIN
    FOR SELECT
        S.STATE_TERM_EXEC_STATEMENT,
        S.COLOR_TERM_EXEC_STATEMENT,
        S.NAME_TERM_EXEC_STATEMENT,
        COUNT(*)
    FROM
        DOC$CS$STATEMENT S
    GROUP BY
        1,
        2,
        3
    INTO
        :ID,
        :COLOR_REST_DAYS,
        :NAME,
        :QUANTITY
    DO
        SUSPEND;
END


Все три поля таблицы DOC$CS$STATEMENT - вычисляемые. При попытке скомпилировать ХП, исключение:
Код: plaintext
1.
2.
Undefined name.
Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255.
Error while parsing procedure GET$CS$WS_CS_BY_REST_DAYS's BLR.

При замене любого поля на константу, компиляция происходит.
Код: sql
1.
2.
3.
4.
5.
    FOR SELECT
        0,--S.STATE_TERM_EXEC_STATEMENT,
        S.COLOR_TERM_EXEC_STATEMENT,
        S.NAME_TERM_EXEC_STATEMENT,
        COUNT(*)



Вопрос: почему не компилируется ХП со всем тремя полями?
...
Рейтинг: 0 / 0
Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255
    #38417681
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... на трёшке (с коннектом клиента 2.5) не ломается:
Код: 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.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
SQL> recreate table t(id int, f01 computed by( mod(id,3) ), f02 computed by( mod(f01*2, 5)), f03 computed by( mod((f01+f02)/
, 7)) ); commit;
SQL> insert into t select rand()*10 from rdb$types rows 20;
SQL> commit;

SQL> select * from t;

          ID          F01                   F02                   F03
============ ============ ===================== =====================
           1            1                     2                     1
           7            1                     2                     1
           1            1                     2                     1
           3            0                     0                     0
           6            0                     0                     0
           5            2                     4                     3
           8            2                     4                     3
           4            1                     2                     1
          10            1                     2                     1
           2            2                     4                     3
           9            0                     0                     0
           6            0                     0                     0
           9            0                     0                     0
           6            0                     0                     0
           3            0                     0                     0
           8            2                     4                     3
           9            0                     0                     0
           1            1                     2                     1
          10            1                     2                     1
           6            0                     0                     0

SQL> select f01,f02,f03,count(*) from t group by 1,2,3;

         F01                   F02                   F03                 COUNT
============ ===================== ===================== =====================
           0                     0                     0                     9
           1                     2                     1                     7
           2                     4                     3                     4



SQL> set term ^;
SQL> create or alter procedure sp returns(f01 bigint, f02 bigint, f03 bigint, cnt bigint) as begin
CON> for select f01,f02,f03,count(*) from t group by 1,2,3 into f01,f02,f03,cnt
CON> do suspend;
CON> end^
SQL> set term ;^
SQL> commit;
SQL> select * from sp;

                  F01                   F02                   F03                   CNT
===================== ===================== ===================== =====================
                    0                     0                     0                     9
                    1                     2                     1                     7
                    2                     4                     3                     4
SQL> show version;
ISQL Version: WI-V2.5.3.26661 Firebird 2.5
Server version:
Firebird/x86/Windows NT (access method), version "WI-T3.0.0.30663 Firebird 3.0 Alpha 1"
Firebird/x86/Windows NT (remote server), version "WI-T3.0.0.30663 Firebird 3.0 Alpha 1/tcp (CSMIRROR)/P12"
Firebird/x86/Windows NT (remote interface), version "WI-V2.5.3.26661 Firebird 2.5/tcp (csprog)/P12"
on disk structure version 12.0
...
Рейтинг: 0 / 0
Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255
    #38417709
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

calculate-выражение с извращениями (типа select-подзапрос etc) или ...?
...
Рейтинг: 0 / 0
Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255
    #38417950
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arni,

Да. В этой таблице их особенно много получилось. Только контекстов явно не 255, хорошо если тридцать на вскидку. Дошло до того, что сама таблица не считывалась через IBExpert с этим же сообщением. Потом вдруг заработало. Сегодня проверил - таблица вся считалась, и ХП нормально скомпилировалась. Что за плавающий глюк - непонятно.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Too many Contexts of Relation/Procedure/Views. Maximum allowed is 255
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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