Программный вызов процесса автоматической обработки строк (DML)

Я использую Oracle APEX 22.1.4 и пытаюсь программно вызвать процесс автоматической обработки строк (DML).

Я попробовал следующим образом, но это не сработало.

apex.server.process(
    'SAVE_PERSON', // Specify your process name here
    {
       
    },
    {
        request: 'UPDATE', // Specify the DML operation (CREATE, UPDATE, DELETE, etc.)
        dataType: 'text', // Ensure the response type is handled correctly
        success: function(data) {
            console.info('DML operation executed successfully: ' + data);
        },
        error: function(xhr, textStatus, errorThrown) {
            console.error('Error executing DML operation:', errorThrown);
        }
    }
);

Может ли кто-нибудь предложить идею для достижения этой цели?

afaik это невозможно в javascript. Автоматическая обработка строк привязана к форме и должна выполняться в разделе обработки жизненного цикла страницы вершины. Это может произойти только при отправке страницы, а не при вызове ajax. Возможно, это изменится в более поздних версиях Apex.

Koen Lostrie 01.07.2024 13:42
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прежде всего, чтобы иметь настраиваемый процесс на вашей странице, вам нужна либо область формы, либо интерактивная сетка:

Form - Automatic Row Processing (DML)
Process to insert, update, or delete a form region row(s).
Interactive Grid - Automatic Row Processing (DML)
Process to insert, update, or delete Interactive Grid rows.

Второй момент, который вам нужно учитывать, это синтаксис: Как следует из раздела «Помощь» на странице:

begin
    case :APEX$ROW_STATUS
    when 'C' then
        insert into emp ( empno, ename, deptno )
        values ( :P1_EMPNO, :P1_ENAME, :P1_DEPTNO )
        returning rowid into :P1_ROWID;
    when 'U' then
        update emp
           set ename  = :P1_ENAME,
               deptno = :P1_DEPTNO
         where rowid  = :P1_ROWID;
    when 'D' then
        delete emp
         where rowid = :P1_ROWID;
    end case;
end;

Вам необходимо использовать этот формат, чтобы иметь собственный код в виде DML. Пример кода, который вы используете в своем вопросе, является примером Javascript-функции обратного вызова AJAX

** Вам, конечно, необходимо изменить код и условия для вашего варианта использования. Это всего лишь простой пример того, как должен быть структурирован код PL/SQL для пользовательского DML.

Привет @cengiz sevimli, спасибо за ответ. Я пробовал этот способ, и это хуже, но все же мне нужно установить «Действие базы данных» как «Действие вставки SQL/Действие обновления SQL или Действие удаления SQL» в поведении кнопки. Я пытался использовать одну кнопку (скажем, «SAV») для обработки действий INSERT и UPDATE. Есть ли способ обработать такое действие кнопки?

chk.buddi 02.07.2024 03:03

если это интерактивная сетка, возможно, вы можете попробовать установить область выполнения как «все отправленные строки»

cengiz sevimli 02.07.2024 08:22

Привет @cengiz. Нет, это форма.

chk.buddi 04.07.2024 08:30

затем в процессе выполнения проверьте атрибут условия на стороне сервера «При нажатии кнопки» и «введите» «пару значений».

cengiz sevimli 04.07.2024 12:25

Привет @cengiz, да, я пробовал именно так. Однако при нажатии кнопки мне нужно установить действие «INSER» или «UPDATE». Мне нужно обрабатывать оба действия с помощью одной кнопки. Например, если :P3_PK_ITEM_ID имеет значение null, тогда => вызовите автоматическую обработку строк (DML) с действием INSERT DB, в противном случае вызовите автоматическую обработку строк (DML) с действием UPDATE DB при нажатии кнопки «СОХРАНИТЬ». Ваш приведенный выше код работает только при вызове через две отдельные кнопки.

chk.buddi 04.07.2024 13:34

Другие вопросы по теме