Гость
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Отладка процедуры с вызовом процедура в пакете / 9 сообщений из 9, страница 1 из 1
16.10.2020, 10:50
    #40009150
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
Код: 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.
SET TERM ^ ;

CREATE OR ALTER PACKAGE TEST_PKG
AS
BEGIN
    PROCEDURE TEST_MAIN;
    PROCEDURE TEST_1;
END^

RECREATE PACKAGE BODY TEST_PKG
AS
BEGIN
    PROCEDURE TEST_MAIN
    AS
    BEGIN
        EXECUTE PROCEDURE TEST_1;
    END

    PROCEDURE TEST_1
    AS
    BEGIN
    END
END^

SET TERM ; ^



При отладке процедуры TEST_MAIN, текст выглядит следующим образом:
Код: sql
1.
2.
3.
4.
5.
PROCEDURE TEST_MAIN
    AS
    BEGIN
        EXECUTE PROCEDURE TEST_1;
    END


И отладка не работает:
Код: plaintext
1.
2.
3.
4.
5.
Undefined name.
Dynamic SQL Error.
SQL error code = -204.
Procedure unknown.
TEST_1.
...
Рейтинг: 0 / 0
16.10.2020, 11:58
    #40009176
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
CyberMax,

Просто совет. Внутри пакета лучше всегда использовать вызов процедур с полным именем TEST_PKG.TEST_1
А то можно нарваться на некоторые неприятности, когда в глобальном пространстве есть одноимённая процедура.
...
Рейтинг: 0 / 0
16.10.2020, 13:31
    #40009210
CyberMax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
Симонов Денис,

Согласен. Последую совету.
...
Рейтинг: 0 / 0
19.10.2020, 03:14
    #40009664
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
Исправил.
...
Рейтинг: 0 / 0
19.10.2020, 15:57
    #40009895
Dimbuch®
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
Добрый день. Так же, появляется ошибка при запуске отладчика, если указать имя пакета при вызове функции из этого же пакета.

Сообщение об ошибке:
Код: plaintext
1.
2.
3.
4.
5.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 19, column 41.
.

Пример пакета:
Код: 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.
SET TERM ^ ;

CREATE OR ALTER PACKAGE NEW_PACKAGE1
AS
BEGIN
  PROCEDURE proc1;
  FUNCTION func1 RETURNS INTEGER;
END^

RECREATE PACKAGE BODY NEW_PACKAGE1
AS
BEGIN
  FUNCTION func1 RETURNS INTEGER
  AS
  BEGIN
    RETURN 0;
  END

  PROCEDURE proc1
  AS
    DECLARE VARIABLE n INTEGER;
  BEGIN
    -- так отладчик работает
    n = func1();

    -- Вот с такой строкой отладчик не запускается
    n = new_package1.func1();

    /*
      Что получается в теле процедуры proc1 в отладчике:

      n = IBE$DBG$PKG$1.func1();
      n = IBE$DBG$PKG$1.func1IBE$DBG$PKG$1.func1();

    */
  END

END^

SET TERM ; ^

...
Рейтинг: 0 / 0
20.10.2020, 05:28
    #40010059
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
Dimbuch®
появляется ошибка при запуске отладчика, если указать имя пакета при вызове функции из этого же пакета.


Исправил.
...
Рейтинг: 0 / 0
20.10.2020, 11:33
    #40010121
Dimbuch®
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
IBExpert,

Теперь на этом же примере пакета не работает для строки
Код: plsql
1.
n = func1();



После входа в режим отладки процедура выглядит так:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
PROCEDURE proc1
  AS
    DECLARE VARIABLE n INTEGER;
  BEGIN
    /* Следующую строку пройти по F8 не удаётся.
        Ошибка

        An error was found in the application program input parameters for the SQL statement.
        Dynamic SQL Error.
        SQL error code = -804.
        Function unknown.
        FUNC1.
    */
    n = func1();

    -- Эта строка заработала
    n = IBE$DBG$PKG$1.func1();

  END
...
Рейтинг: 0 / 0
21.10.2020, 05:39
    #40010387
IBExpert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
Dimbuch®

Теперь на этом же примере пакета не работает для строки
Код: plsql
1.
n = func1();




Исправил.
...
Рейтинг: 0 / 0
21.10.2020, 09:27
    #40010408
Dimbuch®
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отладка процедуры с вызовом процедура в пакете
IBExpert,

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


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