Oracle apex Ajax调用返回服务器错误ORA-01403:找不到APEX交互式网格的数据

Oracle apex Ajax调用返回服务器错误ORA-01403:找不到APEX交互式网格的数据,oracle-apex,oracle-apex-5.1,Oracle Apex,Oracle Apex 5.1,我试图在自定义plsql的帮助下使用交互式网格将数据保存到表中。我在插入数据时遇到“ORA-01403-未找到数据”错误,我不知道为什么 这是我运行的plsql自定义进程。谢谢你的帮助 DECLARE em_id NUMBER; BEGIN CASE :apex$row_status WHEN 'C' THEN SELECT NVL (MAX (emergency_id), 0) + 1 INTO em_id

我试图在自定义plsql的帮助下使用交互式网格将数据保存到表中。我在插入数据时遇到“ORA-01403-未找到数据”错误,我不知道为什么

这是我运行的plsql自定义进程。谢谢你的帮助

DECLARE

em_id   NUMBER;

BEGIN

   CASE :apex$row_status

      WHEN 'C'
      THEN
         SELECT NVL (MAX (emergency_id), 0) + 1
           INTO em_id
           FROM emp_emergency_contact;

         INSERT INTO emp_emergency_contact
                     (emergency_id, emp_id, emergency_name, emergency_relation
                     )
              VALUES (em_id, :emp_id, :emergency_name, :emergency_relation
                     );
      WHEN 'U'
      THEN
         UPDATE emp_emergency_contact
            SET emergency_name = :emergency_name,
                emergency_relation = :emergency_relation
          WHERE emergency_id = :emergency_id;
      WHEN 'D'
      THEN
         DELETE      emp_emergency_contact
               WHERE emergency_id = :emergency_id;
   END CASE;
END;

不完全确定。“选择进入”可以引发未找到数据的异常,但您的异常不应该引发


也就是说,您的代码中不应该有
max(id)+1
。这是一个错误。改为使用序列或标识列。

到目前为止,我还没有遇到任何关于如何使用自定义PL/SQL逻辑通过AJAX调用处理APEX 5.1交互式网格提交的行的文档化方法

由于返回的格式应为特定的json格式,因此未找到任何数据错误

您提供的示例并不太复杂,可以使用标准的“交互式网格-自动行处理(DML)”过程来完成,这是一种AJAX方法。如果AJAX调用不重要,那么您可以使用自定义逻辑创建自己的PL/SQL流程。示例在“示例交互式网格”包应用程序中演示,有关详细信息,请查看此应用程序中的高级>自定义服务器处理页面


我同意Scott的观点,您应该为ID使用序列或标识列。

在插入后添加一个
返回到
子句。IG希望返回一个主键来查询插入的行。

我已经多次得到这个信息,所以我要做的第一件事是查看我的网格sql中不属于“保存”的任何列,它们来自一个只用于数据的联接。 我又得到了它,它是一个标题排序列,我把它作为“Number”的列类型。我把它改为只显示,“保存”现在可以工作了。 尽管如此,我已经将该列的“Source”设置为“queryonly”,这也是必需的

Ajax错误消息至少没有给出导致错误的列名,这是一个错误

希望这对某人有帮助。。
BillC

我在apex 5.1.3.00.05中面临同样的问题。具有要作为进程运行的plsql代码。如何修复它?我没有使用自定义plsql进程,但是当我在区域的sql查询上有where条件时,我得到了这个错误,当我插入时,进程希望在插入时列值也满足条件。当我默认列的值以便满足条件时,问题就消失了。