#sql #oracle #oracle-apex
Вопрос:
Я работаю над системой еженедельных назначений в APEX, и мне нужно использовать форму, чтобы указать рабочее время сотрудников в календаре. Я использую динамическое действие для вставки 365 записей в таблицу вместо кнопки «Отправить». Проблема в том, что, когда я хочу связать свой запрос с идентификатором формы, он не работает, потому что в нем указано, что поле равно нулю.
DECLARE
Start_work_date TIMESTAMP(6);
End_work_date TIMESTAMP(6);
Start_break_date TIMESTAMP(6);
End_break_date TIMESTAMP(6);
Day_name Varchar(20);
BEGIN
Start_work_date := :P2_START_WORK_TIME;
End_work_date := :P2_END_WORK_TIME;
Start_break_date := :P2_START_BREAK_TIME;
End_break_date := :P2_END_BREAK_TIME;
FOR I IN 1..365
LOOP
INSERT INTO TS_SCHEDULE (USER_ID, START_WORK_TIME, END_WORK_TIME,START_BREAK_TIME,END_BREAK_TIME)
VALUES (:P2_USER_ID, Start_work_date, End_work_date, Start_break_date, End_break_date);
Start_work_date := Start_work_date interval '1' day;
End_work_date := End_work_date interval '1' day;
Start_break_date := Start_break_date interval '1' day;
End_break_date := End_break_date interval '1' day;
select to_char(Start_work_date, 'DAY') into Day_name from dual;
IF Day_name = 'SATURDAY' THEN
Start_work_date := Start_work_date interval '2' day;
End_work_date := End_work_date interval '2' day;
Start_break_date := Start_break_date interval '2' day;
End_break_date := End_break_date interval '2' day;
END IF;
END LOOP;
END;
После того, как я получу все входные данные, я попытаюсь использовать :P2_USER_ID для вставки, но он говорит, что это нулевое значение
Как я могу получить значение, которое я ищу, чтобы иметь свои пользовательские вставки?
Комментарии:
1. Работает ли это, если вы используете -1 / ANONYMOUS для идентификатора пользователя ?
Ответ №1:
Вот где это терпит неудачу, верно?
INSERT INTO TS_SCHEDULE (USER_ID, START_WORK_TIME, ...)
VALUES (:P2_USER_ID, Start_work_date, ...);
-----------
Поскольку вы используете динамическое действие, вы P2_USER_ID
вставили элементы динамического действия в свойство отправки? Если нет, я бы посоветовал вам это сделать.
Ответ №2:
Если вы используете динамическое действие, то вы должны иметь возможность указать элемент в параметре «Элементы страницы для отправки».
В качестве альтернативы вы можете попробовать изменить свойство элемента «Поддерживать состояние сеанса» на » За сеанс (диск)».
Хотя я пробую это на ПК в своей форме, и в состоянии сеанса по-прежнему нет значения, в отличие от элементов, не относящихся к пк, которые у меня есть в моей форме с этой настройкой.