我想使用
选择多记录到块中SELECT LEVEL, form_desc, form_NAME
FROM FORM_MAST
where form_id in ( select FORM_ID from dhsuser.FORM_PRIVILEGE where PRIVILEGEID=1)-- :global.priv)
CONNECT BY PRIOR form_ID = g_id
START WITH g_id IS NULL;
或在Oracle表格中使用此程序
PROCEDURE listm IS
l_lev number;
l_dec varchar2(30);
l_nam varchar2(100);
CURSOR mainlist is
SELECT LEVEL, form_desc, form_NAME
FROM FORM_MAST
where form_id in ( select FORM_ID from dhsuser.FORM_PRIVILEGE where PRIVILEGEID=1)-- :global.priv)
CONNECT BY PRIOR form_ID = g_id
START WITH g_id IS NULL;
BEGIN
for e_list in mainlist
loop
:bmain.level := e_list.level;
:bmain.desc := e_list.form_desc;
:bmain.fname := e_list.form_name;
end loop;
END;
结果应显示多条记录 就像这张照片
问题是,当我在Oracle Form中运行此过程时,它只显示最后一条记录。
答案 0 :(得分:1)
您的过程遍历查询的结果集,并将每条记录分配到:BMAIN块中的同一行。当程序结束时,你看到的是最后一条记录。
我认为你只需要在循环中使用NEXT_RECORD,但我还没有安装Forms,我可以测试它。遗憾。