Oracle Apex 更新列为“是”的行

问题描述 投票:0回答:2

我需要有关以下情况的一些建议:

我有一个员工详细信息网格。

网格作为默认IG保存,将数据保存在本地。

它还有另一个流程按钮,需要添加一个功能,这样,将promote_to_upgrade列值设置为Yes的员工只需移动到upgrade_employee表。

在处理中我可以添加条件,例如:

IF :PROMOTE_TO_UPGRADE = 'Yes' --这里 PROMOTE_TO_UPGRADE 是 EMPLOYEES 表中的列,并且是网格中具有“是”或“否”值的选择列表。

然后--插入upgrade_employees............

这个条件行得通吗?

oracle-apex
2个回答
0
投票

您指定的条件将作为处理逻辑的一部分,但必须将其正确合并到处理按钮功能的更大方法或代码中。在按钮的单击事件或操作中,从网格中获取数据,特别是每个员工的

PROMOTE_TO_UPGRADE
列。迭代数据以查找
PROMOTE_TO_UPGRADE
值为
Yes
的工人。为每个此类员工执行
INSERT INTO
语句,将其数据迁移到
upgraded_employees
表。下面是 SQL 伪代码的实际操作示例:

-- Assuming you have a loop or cursor to iterate through the grid data
FOR EACH employee IN grid_data
BEGIN
    IF employee.PROMOTE_TO_UPGRADE = 'Yes' THEN
        INSERT INTO upgraded_employees (columns) VALUES (employee.values);
        -- Optionally, you can delete the employee from the original table if needed
    END IF;
END;

请记住为您的编程语言、数据库和网格实现自定义此逻辑。处理数据库连接、事务和错误处理。


0
投票

这应该有效。我做了以下测试:

  • 在EMP表上创建一个可编辑的IG,IG名称“IG on emp”
  • 在本机进程之后添加了一个具有以下属性的附加进程:
  • 可编辑区域:“IG on emp”
  • 来源:
begin
    if :APEX$ROW_STATUS = 'D' then
        apex_debug.info(
            p_message => q'#kl debug - DELETE: ENAME: %0#',
            p0        => :ENAME);
         
    elsif :APEX$ROW_STATUS = 'U' then
        apex_debug.info(
            p_message => q'#kl debug - UPDATE: ENAME: %0#',
            p0        => :ENAME);
    elsif :APEX$ROW_STATUS = 'C' then
        apex_debug.info(
            p_message => q'#kl debug - CREATE: ENAME: %0#',
            p0        => :ENAME);
    end if;
end;

在调试模式下运行页面,进行一些更改,保存并调查调试。说明执行了原生DML流程,并且这个流程是在这之后执行的。所以这会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.