powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Отладка процедуры с вызовом процедура в пакете
9 сообщений из 9, страница 1 из 1
Отладка процедуры с вызовом процедура в пакете
    #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
Отладка процедуры с вызовом процедура в пакете
    #40009176
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMax,

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

Согласен. Последую совету.
...
Рейтинг: 0 / 0
Отладка процедуры с вызовом процедура в пакете
    #40009664
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил.
...
Рейтинг: 0 / 0
Отладка процедуры с вызовом процедура в пакете
    #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
Отладка процедуры с вызовом процедура в пакете
    #40010059
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimbuch®
появляется ошибка при запуске отладчика, если указать имя пакета при вызове функции из этого же пакета.


Исправил.
...
Рейтинг: 0 / 0
Отладка процедуры с вызовом процедура в пакете
    #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
Отладка процедуры с вызовом процедура в пакете
    #40010387
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimbuch®

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




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

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


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