根据Oracle APEX项目值进行更新和插入

如何解决根据Oracle APEX项目值进行更新和插入

我有APEX页面,它会更新表(SAMPLE_TAB)。该表具有多个列(ID,BADGEID,USERID,NAME,CITY,ZIP,EFDTD,TERMDT,STATUS),ID是记录的不同编号。

BADGEID和USERID是相关的,如果更改了一条记录,它将自动创建新记录并使旧记录过期。

如果NAME,CITY或ZIP发生更改,则应该进行记录更新。

例如:请参见下表

ID Badgeid用户名城市CITY EFFDT TERMDT状态

1 2345 54623 XYZ纽约00000 8/31/2020 12/31/2199有效

2 5678 90876 DEF新泽西州00001 8/31/2020 12/31/2199有效

如果对于相同的USERID(54623),BADGEID 2345更改为2354,则在SEP 1 2020上应该有一个 新记录如下

3 2354 54623 XYZ纽约00000 09/01/2020 12/31/2199有效

并将旧记录更新到下面

1 2345 54623 XYZ纽约00000 8/31/2020 09/01/2020不活动

我在更新处理中尝试使用下面的PL / sql代码,但出现错误

声明 ID_PARM =(从SAMPLE_TAB WHERE ID =:P1_ID中选择徽章)

开始 IF(:P1_BADGEID = ID_PARM)然后 更新....... 其他 插入和更新

解决方法

我相信您正在寻找类似的东西。在“ ...”中填写其他列/页面项/条件:

DECLARE
  l_old_row sample_tab%ROWTYPE;
BEGIN
  SELECT * INTO l_old_row FROM sample_tab WHERE id = :P1_ID;
  IF ((l_old_row.badge_id != :P1_BADGE_ID) OR (l_old_row.user_id != :P1_USERID))
  THEN
    UPDATE sample_tab SET status = 'INACTIVE' WHERE id = :P1_ID;
    INSERT INTO sample_tab (badgeid,userid,...) VALUES (:P1_BADGE_ID,:P1_USERID,...);
  ELSIF ((l_old_row.name != :P1_NAME) OR (l_old_row.city != :P1_CITY) OR ...) THEN
    UPDATE sample_tab
       SET name = :P1_NAME,city = :P1_CITY,...
     WHERE id = :P1_ID;
  END IF;
END;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?