您只描述了问题,而不是整个场景,所以我在下面描述的内容可能不是最佳的。
如果您只想运行一次 select 语句,则可以将查询结果存储在集合中 (apex_collection API),然后在集合上创建经典报告。
这样,初始查询的结果将存储在会话状态中,并且可以通过从APEX_COLLECTIONS 中选择来访问。您可以对结果集进行分页,而无需重新执行查询。
EMP 表示例:
- 创建预呈现页面进程以使用源填充集合:
DECLARE
l_query VARCHAR2(4000);
Begin
IF APEX_COLLECTION.COLLECTION_EXISTS (p_collection_name => 'EMP') THEN
APEX_COLLECTION.DELETE_COLLECTION (p_collection_name => 'EMP');
END IF;
l_query := q'!
select EMPNO,
ENAME,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
from EMP!';
APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY (
p_collection_name => 'EMP',
p_query => l_query);
END;
- 再次创建经典报表 APEX_COLLECTIONS
SELECT C001 AS EMPNO,
C002 AS ENAME,
C003 AS JOB,
C004 AS MGR,
C005 AS HIREDATE,
C006 AS SAL,
C007 AS COMM,
C008 AS DEPTNO
FROM apex_collections
WHERE collection_name = 'EMP';