我创建了一个包含4个文本项的块,我必须使用游标填充它。
我在查询后触发器的相同块中编写了一个代码,如下所示:
DECLARE
CURSOR D_COMM_DET IS
SELECT COMM_SRNO, COMM_SUB_SRNO, COMM_REASON
FROM CUST_COMM
WHERE LEAD_ID = :INQUIRY.INQ_ID; -- master block "INQUIRY"
BEGIN
GO_BLOCK('DISPLAY_DET');
CLEAR_BLOCK('NO_VALIDATE');
FIRST_RECORD;
FOR CUR IN D_COMM_DET
LOOP
:DISPLAY_COMM_DET.A_COMM_SRNO := CUR.COMM_SRNO;
:DISPLAY_COMM_DET.A_COMM_SUB_SRNO := CUR.COMM_SUB_SRNO;
:DISPLAY_COMM_DET.A_COMM_REASON := CUR.COMM_REASON;
NEXT_RECORD;
END LOOP;
FIRST_RECORD;
END;
但这并没有填充文本项中的数据,也没有显示任何错误。 任何人都可以提供同样的帮助。
三江源。
答案 0 :(得分:1)
你不能在POST-QUERY触发器中使用受限制的内置程序,如GO_BLOCK,CLEAR_BLOCK,NEXT_RECORD。
在你的情况下,让DISPLAY_COMM_DET阻止一个细节块到INQUIRY块。
删除POST-QUERY触发器,您不需要它。
答案 1 :(得分:0)
我不确定我是否理解你。如果需要显示其他表中的原因名称,则POST-QUERY触发器是正确的,但是在DISPLAY_COMM_DET块上。
将此块作为基于CUST_COMM表的详细块。创建非数据库项NDB_COMM_REASON_VALUE。在DISPLAY_COMM_DET块上创建POST-QUERY触发器,如下所示:
declare
cursor c_reason is
select comm_value
from common_master
where comm_reason = :display_comm_det.comm_reason;
begin
open c_reason;
fetch c_reason into :display_comm_det.ndb_comm_reason_value;
close c_reason;
end;
答案 2 :(得分:-1)
你不能在POST-QUERY触发器中使用受限制的内置程序,如GO_BLOCK,CLEAR_BLOCK,NEXT_RECORD。
在When-Button-Pressed Trigger中写入Execute_Query和提到的代码。