powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не работает отладка процедуры, если в процедуре используется цикл FOR SELECT ... AS CURSOR
2 сообщений из 2, страница 1 из 1
Не работает отладка процедуры, если в процедуре используется цикл FOR SELECT ... AS CURSOR
    #40079250
Dimbuch®
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Firebird 3, IBExpert 2021.6.14.1

При выполнении в отладчике (Debug procedure) процедуры c циклом FOR SELECT .. AS CURSOR появляется ошибка:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Error Message:
----------------------------------------
Invalid data conversion.

[00547EC7] FIB.FIBError (Line 464, "FIB.pas" + 1) + $2C
[0053684C] FIBQuery.TFIBXSQLVAR.GetAsDouble (Line 943, "FIBQuery.pas" + 8) + $10
[00DC0B65] DebugSP_New.TfrmDebugSP_new.GetQueryFields (Line 3317, "DebugSP_New.pas" + 13) + $A
[00DBB259] DebugSP_New.TfrmDebugSP_new.ExecuteFor (Line 1549, "DebugSP_New.pas" + 98) + $16
[00DBC01E] DebugSP_New.TfrmDebugSP_new.ExecuteStatement (Line 1751, "DebugSP_New.pas" + 20) + $7

Так же, в закладке "Messages" появляется непонятный Warning

Код: plaintext
String truncation occured: NAME -> :CRS.STATUS


Пример для повторения ошибки (войти в Debug процедуры SMPL_CURSOR_PROC_1, идти по шагам клавишей F8):

Код: 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.
CREATE TABLE TABLE_FOR_CURSOR_PROC (
    ID      INTEGER GENERATED BY DEFAULT AS IDENTITY,
    NAME    VARCHAR(50) NOT NULL,
    STATUS  CHAR(1) NOT NULL
);

INSERT INTO TABLE_FOR_CURSOR_PROC (NAME, STATUS)
VALUES ('Первая строка', 'A');
INSERT INTO TABLE_FOR_CURSOR_PROC (NAME, STATUS)
VALUES ('Вторая строка', 'A');
INSERT INTO TABLE_FOR_CURSOR_PROC (NAME, STATUS)
VALUES ('Третья строка', 'A');


COMMIT;



SET TERM ^ ;

CREATE OR ALTER PROCEDURE smpl_cursor_proc_2 (
  paramdate  DATE NOT NULL,
  paramchar  CHAR(50) NOT NULL,
  paramchar1 CHAR(50) NOT NULL,
  paramchar2 CHAR(50) NOT NULL,
  paramint1  SMALLINT NOT NULL = 0,
  paramint2  SMALLINT NOT NULL = 0)
AS
BEGIN

END^

CREATE OR ALTER PROCEDURE smpl_cursor_proc_1
AS
  DECLARE VARIABLE v_operdate DATE;
BEGIN
  v_operdate = 'now';

  FOR
    SELECT t.id, t.name, t.status
    FROM table_for_cursor_proc t
    WHERE t.status = 'A'
    AS CURSOR crs
  DO
  BEGIN
    EXECUTE PROCEDURE smpl_cursor_proc_2(:v_operdate, crs.name, crs.status, '', crs.id);

    UPDATE table_for_cursor_proc SET
      status = 'P'
    WHERE CURRENT OF crs;
  END

END^

SET TERM ; ^


...
Рейтинг: 0 / 0
Не работает отладка процедуры, если в процедуре используется цикл FOR SELECT ... AS CURSOR
    #40082827
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправил.
Но UPDATE ... WHERE CURRENT OF все равно не поддерживается в отладчике.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Не работает отладка процедуры, если в процедуре используется цикл FOR SELECT ... AS CURSOR
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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