我需要创建一个交互式报告,但不是运行sql语句,而是需要运行pl / sql语句
-----------------------------------------------------------------------------
USER_ID Name 1 java 2 php 3 pl/sql / sql 4 Oracle apex
-------------- -------------------- ------ ----- -------------- -------------
3 Amy brown N N Y N
4 Sarah woods N N Y Y
2 Johnny paterson Y Y Y Y
1 John brown Y N Y Y
如果在apex中无法做到这一点,那么在运行pl / sql时,有没有办法以csv格式保存pl / sql语句的结果?
在交互式报告中,用户将无法添加或删除任何内容。它仅供观看。
由于
答案 0 :(得分:0)
您可以使用表格功能
https://mfaisal1521.blogspot.com/2019/12/example-of-oracle-pipelined-function.html
在Apex中也可以导出数据。如果您要导出数据,则可以使用utl_File,但可以在数据库服务器上导出数据。
答案 1 :(得分:0)
正如Scott所说的,一种选择是使用反射器创建一个APEX集合,然后使用APEX_COLLECTIONS视图从数据中创建一个交互式网格。我已经建立了一个例子来证明这一点。
在“页眉之前”点创建一个预渲染过程。使用此方法,可以添加其他逻辑以在集合已经存在时不重新填充数据,或者因此,每次用户刷新页面时都不会刷新数据。
Set up of Pre-Rendering Process
填充集合的源代码:
DECLARE
l_ref_cur SYS_REFCURSOR;
TYPE user_skill_rec IS RECORD
(
user_id NUMBER,
name VARCHAR2 (100),
java VARCHAR2 (1),
php VARCHAR2 (1),
plsql_sql VARCHAR2 (1),
oracle_apex VARCHAR2 (1)
);
l_user_skill user_skill_rec;
FUNCTION get_ref_cursor
RETURN SYS_REFCURSOR
IS
l_cur SYS_REFCURSOR;
BEGIN
OPEN l_cur FOR
SELECT 3 AS user_id,
'Amy brown' AS name,
'N' AS java,
'N' AS php,
'Y' AS plsql_sql,
'N' AS oracle_apex
FROM DUAL
UNION ALL
SELECT 4 AS user_id, 'Sarah woods', 'N', 'N', 'Y', 'Y' FROM DUAL
UNION ALL
SELECT 2 AS user_id, 'Johnny paterson', 'Y', 'Y', 'Y', 'Y' FROM DUAL
UNION ALL
SELECT 1 AS user_id, 'John brown', 'Y', 'N', 'Y', 'Y' FROM DUAL;
RETURN l_cur;
END;
BEGIN
l_ref_cur := get_ref_cursor;
apex_collection.create_or_truncate_collection ('USER_SKILLS');
LOOP
FETCH l_ref_cur INTO l_user_skill;
EXIT WHEN l_ref_cur%NOTFOUND;
apex_collection.add_member (p_collection_name => 'USER_SKILLS',
p_n001 => l_user_skill.user_id,
p_c001 => l_user_skill.name,
p_c002 => l_user_skill.java,
p_c003 => l_user_skill.php,
p_c004 => l_user_skill.plsql_sql,
p_c005 => l_user_skill.oracle_apex);
END LOOP;
END;
然后,只需使用填充了数据的同一集合来创建查询APEX_COLLECTIONS视图的交互式报告即可:
源查询:
select n001, c001, c002, c003, c004, c005
from apex_collections
where collection_name = 'USER_SKILLS'