powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Bug в отладчике - CHAR / VARCHAR
8 сообщений из 8, страница 1 из 1
Bug в отладчике - CHAR / VARCHAR
    #38598131
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, Александр.
Версия IBExpert 2014.3.26.1 (только что скачал)
Процедура никакого смысла не несет, минимальный воспроизводящий пример.

процедура PRC_DBG_BUG1
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE PROCEDURE PRC_DBG_BUG1(C_0 VARCHAR(100), C_1 VARCHAR(100), C_2 VARCHAR(100))
RETURNS(C_RESULT VARCHAR(1000))
AS
DECLARE VARIABLE c1 VARCHAR(100);
DECLARE VARIABLE i INTEGER;
BEGIN
  C_RESULT = '';
  i=0;
  WHILE (i < 3) DO
  BEGIN
    c1 = CASE i
         WHEN 0 THEN C_0
         WHEN 1 THEN C_1
         WHEN 2 THEN C_2
         ELSE ''
         END;

    C_RESULT = C_RESULT || c1 || '~';
    i = i + 1;
  END

  SUSPEND;
END



При выполнении из редактора
Код: sql
1.
SELECT C_RESULT FROM PRC_DBG_BUG1('1', '22', '333')


Возвращает как положено: 1~22~333~

При выполнении пошагово (что в Careful, что в Fast), возвращает: 1 ~22 ~333~

Поправишь?
...
Рейтинг: 0 / 0
Bug в отладчике - CHAR / VARCHAR
    #38598144
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сори, забыл:

FB 2.5.2.26540
Dialect 1
...
Рейтинг: 0 / 0
Bug в отладчике - CHAR / VARCHAR
    #38598193
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_m,

Гм. У меня правильный результат в отладчике получается - '1~22~333~'.
Проверял на FB 3.
...
Рейтинг: 0 / 0
Bug в отладчике - CHAR / VARCHAR
    #38598215
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert, на третий ФБ рановато пока... :(

От диалекта не зависит, проверил только что на Dialect 3.

Ты запускаешь именно в отладчике? Если просто запустить процедуру по >>, то нормально.
А если запустить отладчик, задать параметры, и начать ходить пошагово F8-F8-F8 то получается с лишними пробелами.

Я догадываюсь - такое может быть в CASE, если подставить в него вместо параметров VARCHAR текстовые константы:

Код: sql
1.
2.
3.
4.
5.
CASE i
WHEN 0 THEN '1'
WHEN 0 THEN '22'
WHEN 0 THEN '333'
END



Тогда тип результата будет CHAR(3) и конечно, вместо '1' будет '1 ' с двумя лишними пробелами в конце. Но у меня ведь три одинаковых VARCHAR(100)...
...
Рейтинг: 0 / 0
Bug в отладчике - CHAR / VARCHAR
    #38598219
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql-monitor подтверждает мою версию:

Код: sql
1.
2.
SELECT (CASE  cast(0 as integer) WHEN 0 THEN  '1' WHEN 1 THEN  '22' WHEN 2 THEN  '333' ELSE ''
         END) || '*' FROM RDB$DATABASE
...
Рейтинг: 0 / 0
Bug в отладчике - CHAR / VARCHAR
    #38598243
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_m,

Да, с FB 2.5 такой запрос и будет, ибо параметризованный не препарится сервером. Приходится подставлять значения напрямую в текст.
Возможно, нужно принудительно кастить к типу переменной слева, надо посмотреть.
...
Рейтинг: 0 / 0
Bug в отладчике - CHAR / VARCHAR
    #38598256
oleg_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert, препарится, если задать тип явно, с помощью CAST
для значения i же у тебя сделано: cast(0 as integer)
аналогично для всех.

тут два варианта:

Код: sql
1.
2.
SELECT (CASE  cast(0 as integer) WHEN 0 THEN  CAST('1' AS VARCHAR(100)) WHEN 1 THEN  CAST('22' AS VARCHAR(100)) WHEN 2 THEN  CAST('333' AS VARCHAR(100)) ELSE ''
         END) || '*' FROM RDB$DATABASE



или прямо с параметрами:



Код: sql
1.
2.
SELECT (CASE  cast(:i as integer) WHEN 0 THEN  CAST(:C_0 AS VARCHAR(100)) WHEN 1 THEN  CAST(:C_1 AS VARCHAR(100)) WHEN 2 THEN  CAST(:C_2 AS VARCHAR(100)) ELSE ''
         END) || '*' FROM RDB$DATABASE
...
Рейтинг: 0 / 0
Bug в отладчике - CHAR / VARCHAR
    #38598295
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_m,

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


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