У меня есть интерактивная сетка с некоторыми данными, когда пользователи добавляют новую строку, она не отображается (обнаружил, что это потому, что я написал специальную процедуру для сохранения, и я не возвращаю PK).
Поэтому я настроил динамическое действие при сохранении [Интерактивная сетка] с условием на стороне сервера. Тип: Встроенные ошибки проверки НЕ отображаются, с действительным действием Обновить область.
Но условие, по-видимому, работает.При добавлении строки, которая проходит валидацию, она обновляется очень хорошо, но при добавлении строки, которая не проходит валидацию, появляется ошибка валидации, и появляется всплывающее окно с вопросом, хочу ли я продолжить работу после внесения изменений (пытается обновить).
Я попытался изменить условие, чтобы отображались встроенные ошибки проверки, но это не помогло.Я попытался изменить область действия события на Dynamic (что я даже не знаю, что он делает), но это не помогло.
Я также изменил первичный ключ IG на ROWID из PK по умолчанию из моей таблицы, если это может помочь с пользовательской процедурой сохранения.
Я бы предпочел исправить это без редактирования сохраненияпроцедура, как будто мне нужно, мне нужно будет исправить много процедур сохранения.Но если я не могу, я готов исправить их.Но я не уверен, как.Моя процедура сохранения отформатирована следующим образом:
PROCEDURE save_table (s_variable1 IN table.variable1%TYPE
, s_variable2 IN table.variable2%TYPE
, row_status IN VARCHAR2)IS
BEGIN
CASE row_status
WHEN 'C' THEN
INSERT INTO table(variable1, variable2)
VALUES (variable1_seq.nextval, s_variable2);
WHEN 'U' THEN
UPDATE table
SET variable2= s_variable2
WHERE variable1= s_variable1;
WHEN 'D' THEN
DELETE FROM table
WHERE variable1= s_variable1;
END CASE;
END save_table;
Если кто-то может сказать мне самый простой способ исправить это, чтобы вернуть PK (variable1) или ROWID, чтобы IG обновлял эту строку, поэтому мне даже не нужноДинамическое действие.
РЕДАКТИРОВАТЬ: Нашел самый простой способ сделать это, чтобы изменить процедуру и выяснить, как:
PROCEDURE save_table (s_variable1 IN OUT table.variable1%TYPE
, s_variable2 IN table.variable2%TYPE
, row_status IN VARCHAR2)IS
a_variable1 table.variable1%TYPE;
BEGIN
CASE row_status
WHEN 'C' THEN
a_variable1 := variable1_seq.nextval;
INSERT INTO table(variable1, variable2)
VALUES (a_variable1, s_variable2)
RETURNING a_variable1 INTO s_variable1;
Только опубликовал раздел, который я изменил.