Ajax 调用返回服务器错误 ORA-01403:未找到 APEX 交互式网格的数据
Ajax call returned server error ORA-01403: no data found for APEX Interactive Grid
我正在尝试在自定义 plsql 的帮助下使用交互式网格将数据保存到我的 table 中。我在插入数据时 运行 遇到 "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;
不太确定。 'select into' 可以引发 no_data_found 异常,但你的不应该。
也就是说,您的代码中不应该有 max(id)+1
。这是一个错误。请改用序列或标识列。
到目前为止,我还没有遇到任何关于如何使用自定义 PL/SQL 逻辑通过 AJAX 调用处理提交的 APEX 5.1 交互式网格行的记录方式。
您没有找到任何数据错误,因为 return 应该是某种 json 格式。
您提供的示例并不太复杂,可以使用标准 "Interactive Grid - Automatic Row Processing (DML)" 流程完成,这是一种 AJAX 方法。如果 AJAX 调用不重要,那么您可以使用自定义逻辑创建自己的 PL/SQL 流程。 "Sample Interactive Grids" 包应用程序中演示了其中的示例,请查看此应用程序中的“高级”>“自定义服务器处理”页面以获取更多信息。
我同意 Scott 的观点,您应该为 ID 使用序列或标识列。
在插入后添加一个RETURNING INTO
子句。 IG希望返回一个主键来查询插入的行。
我遇到过很多次,所以我做的第一件事就是查看网格 sql 中不属于 "Save" 的任何列,它们来自数据连接只要。
我刚刚又得到它,它是一个标题排序列,我的列类型为 "Number"。我将其更改为仅显示,"Save" 现在可以使用了。
虽然,我已经将列的 "Source" 设置为 "Query Only",这也是需要的。
令人遗憾的是,Ajax 错误消息至少没有给出导致错误的列名。
希望这对某人有所帮助..
比尔C
我正在尝试在自定义 plsql 的帮助下使用交互式网格将数据保存到我的 table 中。我在插入数据时 运行 遇到 "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;
不太确定。 'select into' 可以引发 no_data_found 异常,但你的不应该。
也就是说,您的代码中不应该有 max(id)+1
。这是一个错误。请改用序列或标识列。
到目前为止,我还没有遇到任何关于如何使用自定义 PL/SQL 逻辑通过 AJAX 调用处理提交的 APEX 5.1 交互式网格行的记录方式。
您没有找到任何数据错误,因为 return 应该是某种 json 格式。
您提供的示例并不太复杂,可以使用标准 "Interactive Grid - Automatic Row Processing (DML)" 流程完成,这是一种 AJAX 方法。如果 AJAX 调用不重要,那么您可以使用自定义逻辑创建自己的 PL/SQL 流程。 "Sample Interactive Grids" 包应用程序中演示了其中的示例,请查看此应用程序中的“高级”>“自定义服务器处理”页面以获取更多信息。
我同意 Scott 的观点,您应该为 ID 使用序列或标识列。
在插入后添加一个RETURNING INTO
子句。 IG希望返回一个主键来查询插入的行。
我遇到过很多次,所以我做的第一件事就是查看网格 sql 中不属于 "Save" 的任何列,它们来自数据连接只要。 我刚刚又得到它,它是一个标题排序列,我的列类型为 "Number"。我将其更改为仅显示,"Save" 现在可以使用了。 虽然,我已经将列的 "Source" 设置为 "Query Only",这也是需要的。
令人遗憾的是,Ajax 错误消息至少没有给出导致错误的列名。
希望这对某人有所帮助.. 比尔C