1

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

这是我运行的 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;
4

4 回答 4

2

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

您没有找到数据错误,因为返回应该是某种 json 格式。

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

我同意 Scott,您应该使用序列或身份列作为 id。

于 2017-03-15T04:38:45.677 回答
2

不完全确定。'select into' 可以引发 no_data_found 异常,但你的不应该。

话虽如此,您的代码中不应有max(id)+1任何内容。这是一个错误。请改用序列或标识列。

于 2017-03-14T01:13:38.287 回答
0

我已经得到了很多次,所以我做的第一件事是查看我的网格 sql 中不属于“保存”的任何列,它们仅来自数据连接。我又得到了它,它是一个标题排序列,我有一个列类型为“数字”。我将其更改为仅显示,“保存”现在可以使用。虽然,我已经将列的“来源”设置为“仅查询”,这也是需要的。

令人遗憾的是,Ajax 错误消息至少没有给出导致错误的列名。

希望这对某人有所帮助.. BillC

于 2017-10-11T14:53:14.573 回答
-1

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

于 2017-09-20T10:28:39.593 回答