优化 PLSQL 游标 Oracle Apex

Optimize PLSQL Cursor Oracle Apex

我正在通过将 html 嵌入到 PLSQL 中来制作 HTML 报告。我已经通过 2 个游标和嵌套循环完成了此操作,但我想对其进行优化。我的 Oracle Apex 报告正在生成此输出

ACCOUNTING - NEW YORK
King - President
Clark - Manager
Miller - Clerk
RESEARCH - DALLAS
Jones - Manager
Scott - Analyst
Ford - Analyst
Smith - Clerk
Adams - Clerk
SALES - CHICAGO
Blake - Manager
Allen - Salesman
Ward - Salesman
Martin - Salesman
Turner - Salesman
James - Clerk
OPERATIONS - BOSTON
No Employee

我的密码是

    declare
Cursor c_dept Is Select d.Deptno,d.Dname,d.Loc
      From  eba_demo_load_dept d;

   Cursor c_Emp(v_Deptno Number) Is Select e.Empno,e.Ename,e.Job
      From   eba_demo_load_emp e
      Where  e.Deptno = v_Deptno;
begin

 For i In c_Dept Loop

      Htp.p('<ul>');
      Htp.p('<h4>' || i.Dname ||' - '||i.loc||'</h4>');
      --
      For j In c_Emp(i.Deptno) Loop
        Htp.p('<li>' || initcap(j.Ename) || ' - ' ||initcap(j.job)||'</li>');       
      End Loop;
    Htp.p('</ul>');    
   End Loop;

  Htp.p('<p>No Employee </p>');

end;

我要优化一下。是否可以通过游标变量中的内部连接在一个循环中实现相同的输出。如果是,请帮助。

我会说嵌套游标循环 - 在这种情况下 - 做了它应该做的事情。由于 HTML 标签不同,我认为其他解决方案不会使它变得更好;可能稍微难以阅读和理解。现在的样子,很清楚你在做什么,你期望得到什么结果。

但是,为什么你这样做有什么特别的原因吗? Apex 提供交互式和经典报告,只需点击几下即可轻松完成。我建议您使用其中之一而不是您自己的代码。

您可以通过组合查询来使用单个游标,如下所示:

declare
Cursor c_dept Is 
Select d.Deptno,d.Dname,d.Loc,,
           Listagg('<li>' || initcap(j.Ename) || ' - ' ||initcap(j.job)||'</li>', chr(10))
             Within group (order by 1) as emps
      From eba_demo_load_dept d
      Join eba_demo_load_emp e
      On e.Deptno = d.Deptno
      Group by d.Deptno,d.Dname,d.Loc;

begin

 For i In c_Dept Loop

      Htp.p('<ul>');
      Htp.p('<h4>' || i.Dname ||' - '||i.loc||'</h4>');
      --

    Htp.p(i.emps);       

    Htp.p('</ul>');    
   End Loop;

  Htp.p('<p>No Employee </p>');

end;