Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBExpert Новый топик    Ответить
 Дебаг процедуры на фб3 не работает  [new]
streletsky
Member

Откуда:
Сообщений: 8
добрый день!

Пробовал с самой последней версией ibexpert пройти под отладкой процедуру, но на первом "for select" появляется ошибка

Error Message:
----------------------------------------
Unsuccessful execution caused by a system error that precludes successful execution of subsequent statements.
Cursor is not open.


[00541273] FIB.IBError (Line 555, "FIB.pas" + 55) + $2
[005379AE] FIBQuery.TFIBQuery.Next (Line 3200, "FIBQuery.pas" + 23) + $C
[00D4D4A3] DebugSP_New.TfrmDebugSP_new.ExecuteStatement (Line 1535, "DebugSP_New.pas" + 20) + $7


проблема наблюдается только на фарбёрде 3, на 2.5. все работает хорошо
если надо базу или тест процедуры могу скинуть

спасибо !
21 июн 17, 13:34    [20580467]     Ответить | Цитировать Сообщить модератору
 Re: Дебаг процедуры на фб3 не работает  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2038
Текст тестовой процедуры в студию. Желательно без лишнего, на системных таблицах.
21 июн 17, 14:46    [20580755]     Ответить | Цитировать Сообщить модератору
 Re: Дебаг процедуры на фб3 не работает  [new]
streletsky
Member

Откуда:
Сообщений: 8
база на sqldialect 1

похоже всё зависит от имени входящего параметра процедуры :)

create or alter procedure test_proc (
    tp_in_out varchar(10)
    )
returns (
    p_name varchar(255)
    )
as

begin

   for select a.mon$remote_address from mon$attachments a where
    ((a.mon$attachment_name =:tp_in_out) or (:tp_in_out="0"))
    into :p_name
    do suspend;

end
22 июн 17, 08:27    [20582338]     Ответить | Цитировать Сообщить модератору
 Re: Дебаг процедуры на фб3 не работает  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2038
streletsky

похоже всё зависит от имени входящего параметра процедуры :)


Не от имени, а от конструкции выражения во WHERE.
Вот так будет работать:

create or alter procedure test_proc (
    tp_in_out varchar(10)
    )
returns (
    p_name varchar(255)
    )
as

begin

   for select a.mon$remote_address from mon$attachments a where
    ((a.mon$attachment_name =:tp_in_out) or ([b]cast(:tp_in_out as varchar(10))[/b]="0"))
    into :p_name
    do suspend;

end
22 июн 17, 13:33    [20583444]     Ответить | Цитировать Сообщить модератору
 Re: Дебаг процедуры на фб3 не работает  [new]
streletsky
Member

Откуда:
Сообщений: 8
IBExpert,
выходит, если не указать что параметр в where имеет размер varchar(10), дебагер считает его varchar(1), по длине значения.
а нельзя ли определять размер по размеру входящих параметров?
22 июн 17, 14:29    [20583636]     Ответить | Цитировать Сообщить модератору
 Re: Дебаг процедуры на фб3 не работает  [new]
IBExpert
Member

Откуда: От верблюда
Сообщений: 2038
streletsky
выходит, если не указать что параметр в where имеет размер varchar(10), дебагер считает его varchar(1), по длине значения.


Дебаггер препарирует запрос
select a.mon$remote_address from mon$attachments a where
    ((a.mon$attachment_name = ?) or (? ="0"))

и смотрит, что вернул сервер. Сервер в данном случае возвращает VARCHAR(1) для второго параметра.

streletsky
а нельзя ли определять размер по размеру входящих параметров?


Теоретически можно, практически там наверняка куча других нюансов нарисуется.
22 июн 17, 17:53    [20584399]     Ответить | Цитировать Сообщить модератору
 Re: Дебаг процедуры на фб3 не работает  [new]
streletsky
Member

Откуда:
Сообщений: 8
IBExpert
и смотрит, что вернул сервер. Сервер в данном случае возвращает VARCHAR(1) для второго параметра.

спасибо за разъяснения, буду кастить.
22 июн 17, 18:27    [20584486]     Ответить | Цитировать Сообщить модератору
 Re: Дебаг процедуры на фб3 не работает  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 7287
streletsky
спасибо за разъяснения, буду кастить.


зачем? Это лишние действие внутри процедуры, если только на время отладки, а потом не забыть удалить.
22 июн 17, 20:06    [20584614]     Ответить | Цитировать Сообщить модератору
Все форумы / IBExpert Ответить