首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何遍历listagg

如何遍历listagg
EN

Stack Overflow用户
提问于 2019-01-26 08:33:47
回答 1查看 597关注 0票数 0

你能帮我解决下面的问题吗?

问题:我有一个甲骨文顶端页面,其中有一个包含部门名称和员工名称的报告以及复选框。选择一个或多个复选框并单击submit按钮时,应该会发生以下情况。

  1. pl/sql代码应该从emp表中获取所有选定行的部门名称。
  2. 接下来,它应该为选中的复选框在每个部门下获取雇用人员姓名。

实现这一目标的最佳途径是什么?

下面是我的密码。

代码语言:javascript
复制
    FOR i in 1..APEX_APPLICATION.G_F01.count
    LOOP
    IF APEX_APPLICATION.G_F01(i) IS NOT NULL THEN
      select listagg(dept_name,',') WITHIN GROUP (ORDER BY 
      TESTSET_PATH) into str_dept_names from emptable
      WHERE 
      emptable._ID=APEX_APPLICATION.G_F01(i) group by dept_name;
     END IF;   
    END LOOP;


    FOR REC IN str_dept_names
    LOOP
      FOR i in 1..APEX_APPLICATION.G_F01.count
       LOOP
       IF APEX_APPLICATION.G_F01(i) IS NOT NULL THEN
          select  listagg(ename,',') WITHIN GROUP (ORDER BY 
          dept_name) into str_enums from 
          emptable where dept_name LIKE 
          (rec.str_dept_names) and 
          emptable .ID 
         =APEX_APPLICATION.G_F01(i);

        myclob:=-myclob||'java -jar test.jar - 
        dept'||rec.str_dept_names||str_testnums;

        END IF;
     END LOOP;
     END LOOP;

我在myclob中的输出应该是: deptA、emp1、emp2

EN

回答 1

Stack Overflow用户

发布于 2019-01-28 01:20:50

在Apex 5中添加的apex_string包使用嵌套表,这些表在SQL中运行得很好。缺点是你必须做一个转换。所以我通常会这样做,以避免循环:

代码语言:javascript
复制
if apex_application.g_f01.count > 0 then
    l_dept_ids := apex_string.split( apex_util.table_to_string( 
        apex_application.g_f01 ), ':' );

    select listagg(dept_name,',') WITHIN GROUP (ORDER BY 
           TESTSET_PATH) into str_dept_names 
      from emptable
     WHERE emptable._ID MEMBER OF l_dept_ids
end if;

我不确定我是否理解你的第二个问题。您使用的是LIKE子句,但这似乎非常奇怪。id不是主键吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54376850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档