Почему это приводит к исключению org.postgresql.util.PSQLException: индекс столбца находится вне допустимого диапазона?

Я пытаюсь запустить функцию на сервере PostgreSQL 11 от Ignition (8.0.16) как именованный запрос и получаю ошибку индекса столбца. Везде, где обсуждалась эта ошибка в отношении Postgres, показано, что это проблема предоставленных и ожидаемых параметров, не совпадающих по количеству.

Он всегда отображается как на единицу больше, чем указанное число, как выходящее за пределы допустимого диапазона. Даже при изменении использовать другое количество параметров.

Я насчитал везде 13: параметры зажигания, тестовые параметры, вызов функции в Ignition, определение функции, таблица. Вот вызов функции из Ignition:

SELECT insert_run_data(
:speed_in,
:avg_speed_in,
:coater_num_in,
:coater_op_in,
:finisher_in,
:helper1_in,
:helper2_in,
:coater_down_in,
:current_downtime_reason_in,
:hanging_downtime_reason_in,
:tabcode_in,
:start_time_in,
:end_time_in
);

В том же окне именованного запроса, если я закомментирую вызов функции и попытаюсь написать напрямую, используя те же параметры, он запишет без проблем:

insert into 
nh_coater_tabcode_operator_data(
speed, avg_speed, coater_num, coater_op, finisher, helper1,
helper2, coater_down, current_downtime_reason,
hanging_downtime_reason, tabcode, start_time, end_time
)
  
values(:speed_in, :avg_speed_in, :coater_num_in, :coater_op_in,
:finisher_in, :helper1_in, :helper2_in, :coater_down_in,
:current_downtime_reason_in, :hanging_downtime_reason_in, :tabcode_in,
:start_time_in, :end_time_in
);

Функция также отлично работает из PGAdmin.

Вот основные сведения, показывающие SQL, использованный для создания таблицы и функции, трассировку стека из Ignition и изображение, показывающее соответствие параметров окна создания именованного запроса:

создать суть функции

создать суть таблицы

трассировка стека сути ошибки

параметры в Ignition


person MorrisMoss    schedule 22.02.2021    source источник


Ответы (1)


Кажется, что Ignition Designer кэширует эту функцию. Поэтому, если он будет изменен, вам нужно будет сохранить и снова открыть проект: открыть другой, затем переключиться обратно или закрыть и открыть новое окно дизайнера.

person MorrisMoss    schedule 23.02.2021