powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка Input parameter mismatch for procedure
5 сообщений из 5, страница 1 из 1
Ошибка Input parameter mismatch for procedure
    #39929755
ip25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Подскажите пожалуйста, как разобраться с этой ошибкой:
авторUnsuccessful execution caused by a system error that precludes successful execution of subsequent statements.Dynamic SQL Error. Input parameter mismatch for procedure AFTERLAP_UPDATE.

Процедура:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SET TERM ^ ;

create or alter procedure afterlap_update (
    f_t_number numeric(5,0))
returns (
    t_last_finish_time date)
as
BEGIN

  Update teams
 set teams.T_LAST_FINISH_TIME = "now"
WHERE teams.T_NUMBER=:F_T_NUMBER;

END^

SET TERM ; ^



Задумка: после ввода в одну таблицу номера участника, изменить в другой таблице значения некоторых столбцов этого участьника

Попытки (Windows7, Firebird 2.5; IBExpert Scrip executive SYSDBA):
1.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SET TERM ^ ;

CREATE or alter PROCEDURE afterlap_update (F_T_NUMBER numeric(5,0))
  RETURNS (T_LAST_FINISH_TIME timestamp)
AS 
declare variable F_T_NUMBER numeric(5,0);
BEGIN
  FOR select finish.F_T_NUMBER
  FROM FINISH
  where finish.F_T_NUMBER=new.F_T_NUMBER
  into :F_T_NUMBER

  DO
  Update teams
 set teams.T_LAST_FINISH_TIME = "now"
WHERE teams.T_NUMBER=:F_T_NUMBER;

END^

SET TERM ; ^




Ошибка:
авторUnsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.Dynamic SQL Error.SQL error code = -901.variable F_T_NUMBER conflicts with parameter in same procedure.

После этого решил разделить процедуру и создал сначала указаную процедуру afterlap_update и питался её запустить таким образом:
2.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SET TERM ^ ;

CREATE OR ALTER TRIGGER F_T_NUMBER_AI FOR FINISH
ACTIVE AFTER INSERT POSITION 0
as
declare variable F_T_NUMBER numeric(5,0);
begin
  FOR select finish.F_T_NUMBER
  FROM FINISH
  where finish.F_T_NUMBER=new.f_t_number
  into :F_T_NUMBER
  DO
execute procedure afterlap_update;

END^

SET TERM ; ^



Ошибка:
авторUnsuccessful execution caused by a system error that precludes successful execution of subsequent statements.Dynamic SQL Error.Input parameter mismatch for procedure AFTERLAP_UPDATE.

3.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SET TERM ^ ;

CREATE OR ALTER TRIGGER F_T_NUMBER_AI FOR FINISH
ACTIVE AFTER INSERT POSITION 0
as
declare variable F_T_NUMBER numeric(5,0);
begin
new.F_T_NUMBER=:F_T_NUMBER;
execute procedure afterlap_update;

END^

SET TERM ; ^



Ошибка:
авторUnsuccessful execution caused by a system error that precludes successful execution of subsequent statements.Dynamic SQL Error.Input parameter mismatch for procedure AFTERLAP_UPDATE.

Потом питался создать тригер через IBExpert New trigger ... форму (2. и 3. вариант) - результат тот же (Unsuccessful execution...Error.Input parameter mismatch for procedure AFTERLAP_UPDATE.)

4. (Данние в таблицах присутствуют; в столбце F_T_NUMBER есть значение 1, тип данных этого столбца - numeric(5,0) )

Код: sql
1.
2.
3.
4.
5.
select F_T_NUMBER
FROM FINISH
where F_T_NUMBER=1;
execute procedure afterlap_update;
commit;



Ошибка:
авторUnsuccessful execution caused by a system error that precludes successful execution of subsequent statements.Dynamic SQL Error.Input parameter mismatch for procedure AFTERLAP_UPDATE.

Помогите, пожалуйста.

Извиняюсь, если глупая ошибка, в мире Firebird и SQL скриптов недавно и больше знакоm с MS Access.
...
Рейтинг: 0 / 0
Ошибка Input parameter mismatch for procedure
    #39929759
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ip25,

берёшь Google Translate и переводишь ошибки. Из них вполне можно догадаться что не так.
...
Рейтинг: 0 / 0
Ошибка Input parameter mismatch for procedure
    #39929763
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ip25,

господи помилуй! это что-ж за код такой.

returns (
t_last_finish_time date)
а куда оно returns-то, я не вижу совершенно.

код 1 - каким образом у вас и входная переменная F_T_NUMBER, и локальная переменная тоже F_T_NUMBER?
ну и еще в таблице столбец с таким же именем - finish.F_T_NUMBER. Вы хотите сервер запутать, или себя?

execute procedure afterlap_update; - где передача параметра в процедуру? Я уж молчу про выходной параметр t_last_finish_time, который так нигде и не используется (и опять же, в таблице есть teams.T_LAST_FINISH_TIME).

Или вы думаете, что если задать параметры или переменные с именами, аналогичными столбцам, то в процедуре они волшебным образом из столбцов таблиц заполнятся???

Почитайте хоть
http://www.ibase.ru/sp_call/
вдруг поможет.
...
Рейтинг: 0 / 0
Ошибка Input parameter mismatch for procedure
    #39929902
ip25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, заработала.

1.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SET TERM ^ ;

create or alter procedure afterlap_update (
    f_t_number numeric(5,0))
as
BEGIN

  Update teams
 set teams.T_LAST_FINISH_TIME = "now"
WHERE teams.T_NUMBER=:F_T_NUMBER;

END^

SET TERM ; ^


+

2.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SET TERM ^ ;

CREATE OR ALTER TRIGGER F_T_NUMBER_AI FOR FINISH
ACTIVE AFTER INSERT POSITION 0
as
begin

execute procedure afterlap_update
(select finish.F_T_NUMBER FROM FINISH
where finish.F_T_NUMBER=new.f_t_number  );

end
^

SET TERM ; ^
...
Рейтинг: 0 / 0
Ошибка Input parameter mismatch for procedure
    #39929921
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ip25,

Все гораздо проще должно быть
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR ALTER TRIGGER F_T_NUMBER_AI FOR FINISH
ACTIVE AFTER INSERT POSITION 0
as
begin
  Update teams
 set teams.T_LAST_FINISH_TIME = "now"
WHERE teams.T_NUMBER=new.f_t_number;
end

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


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