Страница 1 из 1

Вызов процедур ошибка параметров

Добавлено: 25 ноя 2005, 11:01
lsn-syzran
Привет всем. Подскажите плиз такая проблема надо из одной процедуры вызвать другую и обработать полученный от нее результат. Текст вызываемой процедуры
CREATE PROCEDURE INSTABEL_DAY (
NEWTABELID INTEGER,
TABEL_DAYTYPEID INTEGER,
NUM INTEGER
) RETURNS (
ID INTEGER
) AS
begin
id = gen_id(gennewtabelday,1);
insert into tabel_day(id,newtabelid,tabel_daytypeid,num)
values(:id,:newtabelid,:tabel_daytypeid,:num);
suspend;
end


Вызываю из другой процедуры строкой вида:
select id from instabel_day(:id,:daytype,:daynum) into tabeldayid;

При компиляции процедуры из которой происходит вызов получаю ошибку :
erase rdb$procedure_parameters failed parameters mismatch for procedure instabel_day
Что делаю не так?

Добавлено: 25 ноя 2005, 11:32
lsn-syzran
Спасибо, нашел в чем проблема была. При изменении количества параметров в вызываемой процедуре, необходимо было из вызывающий удалить строку вызова, затем сохранить ее, а затем заново прописать строку вызова с добавленным параметром. По видимому какой то баг firebird а

Добавлено: 25 ноя 2005, 12:25
kdv
По видимому какой то баг firebird
а ты как хотел, чтобы он тебе вообще запрещал модифицировать такие процедуры, или иначе? Давай идею, подумаем.

p.s. эта ситуация давно описана на сайте.

Добавлено: 25 ноя 2005, 13:20
lsn-syzran
как то не корректно получается. Если я изменил количество параметров в вызываемой процедуре, то я даже не могу удалить строку вызова этой процедуры из вызывающий проведуры. Сначала надо удалить все вызовы, потом менять параметры, потом только я могу изменить строку вызова процедуры.

Добавлено: 25 ноя 2005, 13:24
lsn-syzran
может действительно или запрещать редактирование таких процедур пока на нее есть вызов или предусмотреть какой то механизм который будет позвлолять менить строку вызова процедуры с изменившимися параметрами

Добавлено: 25 ноя 2005, 14:05
Merlin
lsn-syzran писал(а):может действительно или запрещать редактирование таких процедур пока на нее есть вызов или предусмотреть какой то механизм который будет позвлолять менить строку вызова процедуры с изменившимися параметрами
А ещё лучше не пудрить людям мозги, а указывать свою версию сервера. Чтобы сразу получить ответ, что в FB1.5 этот механизм уже предусмотрен.