暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 创建动态区域或动态交互式报告

ASKTOM 2020-05-16
396

问题描述

在理解问题思想之前,我有一个表有3列,一个是id第二是描述,第三是sql查询,我创建了一个有两个区域的顶点页面,一个是静态区域,一个是交互式报告区域。
在静态区域中,我有一个用户选择列表,在交互式报告区域中,它根据选择执行查询并给出输出。我使用源类型: L/SQL函数体返回交互式报表的SQL查询我写以下代码
声明
V_TBLQRY VARCHAR2(500);
开始
从BKP选择QRY到V_TBLQRY,其中TBL_NM = :P2_TBLNM;
返回V_TBLQRY;
异常
当其他人那么
返回 “从MNU_USRGRP_M中选择GRP_CD,GRP_DSCR”;
结束;

当页面加载异常被引发和报告显示,但当我们改变选择它给出错误,我无法跟踪它。我也尝试使用apex_collections,但问题是报告和报告标题上也有一些未使用的列,我无法动态更改。我在apex.oracle.com上传的总案例
工作区: HLL用户名: dax.apex@gmail.com密码: Apex @ 1234运行系统用户名演示和密码是演示。问题出现在第2页。

您可以从这里下载测试用例 (我不知道如何上传和创建LiveSql链接,我在LiveSql上上传脚本,但无法创建链接。
https://drive.google.com/file/d/1F0_v7xvdLlEAYB0o8Hby_P4BRcDB_LOI/view?usp=sharing

专家解答

据我所知,您不能动态更改报告的列 (即 * 结构 *)。我有一个可以让我运行任何查询的应用程序-我使用APEX集合进行操作,如下所示

declare
    l_query varchar2(32767) := nvl(:P1_sql,'select * from dual');
    l_theCursor     integer default dbms_sql.open_cursor;
    l_columnValue   varchar2(4000);
    l_descTbl       dbms_sql.desc_tab;
    l_colCnt        number;
    l_sql varchar2(4000) := 'select /*smartcheck*/ ';
    l_sep     varchar2(1);

begin
  IF APEX_COLLECTION.COLLECTION_EXISTS ( p_collection_name => 'ANY_SQL') THEN
     APEX_COLLECTION.DELETE_COLLECTION( p_collection_name => 'ANY_SQL');
  end if;

  APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY (
      p_collection_name => 'ANY_SQL',
      p_query => l_query);

   dbms_sql.close_cursor(l_theCursor);
   l_theCursor     := dbms_sql.open_cursor;
   dbms_sql.parse(  l_theCursor, l_query, dbms_sql.native );
   dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl );
 
   :P1_COLCOUNT := l_colcnt;

   for i in 1 .. least(l_colCnt,50)
   loop
     apex_util.set_session_state( p_name  => 'P1_HEADER'||lpad(i,2,0)
                                , p_value =>  l_descTbl(i).col_name
                                );
   end loop;

end;
复制


它填充集合,并将列标题设置为列的名称。我所在的地区是:

select 
 c001
,c002
,c003
,c004
,c005
,c006
,c007
,c008
,c009
,c010
,c011
,c012
,c013
,c014
,c015
,c016
,c017
,c018
,c019
,c020
,c021
,c022
,c023
,c024
,c025
,c026
,c027
,c028
,c029
,c030
,c031
,c032
,c033
,c034
,c035
,c036
,c037
,c038
,c039
,c040
,c041
,c042
,c043
,c044
,c045
,c046
,c047
,c048
,c049
,c050
from apex_collections 
where collection_name = 'ANY_SQL'

复制



文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论