创建一个允许用户输入SQL语句的页面,当用户按下按钮时,它应该执行此查询,另一个区域将用经典报告显示结果。在Button上,动态操作执行PL/SQL代码如下:单击事件:
begin
IF :P8_YOURSQL IS NOT NULL THEN
APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY (
p_collection_name => 'SOMECOLLECTION',
p_query => :P8_YOURSQL,
p_truncate_if_exists => 'YES'
);
end if;
end;提交项目: P8_YOURSQL
第二,行动刷新CR区域和CR区域的基础是:
SELECT * FROM APEX_COLLECTIONS
WHERE COLLECTION_NAME = 'SOMECOLLECTION';结果列不限于查询结果,列标题为C001、C002、C003等。(a)如何将列限制为包含的SQL语句?(b)如何将标题更改为实际列名?(c)如何检查有效的SQL语句?
请帮助样例代码如何。
发布于 2022-03-24 16:24:24
APEX_COLLECTIONS是一个通用表,因此它有两个列用于最常见的数据类型,名称为C001, N001等。与任何表列一样,可以在查询中别名。
示例:
APEX_COLLECTION.CREATE_COLLECTION_FROM_QUERY (
p_collection_name => 'EMP_COLLECTION',
p_query => q'!SELECT * FROM emp!',
p_truncate_if_exists => 'YES'
);中的列
查询。
SELECT
c001 as EMPNO,
c002 as ENAME,
c003 as JOB,
c004 as MGR,
<rest_of_columns>...
FROM
APEX_COLLECTIONS WHERE collection_name = 'EMP_COLLECTION'在执行SELECT * FROM ...时不可能使用别名列
如果SELECT *很重要,那么还有另一种可能性。在APEX_COLLECTIONS上创建一个具有相关列名的视图。示例:
CREATE OR REPLACE view EMP_COLLECTION_V
AS
SELECT
c001 as EMPNO,
c002 as ENAME,
c003 as JOB,
c004 as MGR
FROM
APEX_COLLECTIONS WHERE collection_name = 'EMP_COLLECTION'然后使用SELECT * FROM EMP_COLLECTION_V作为典型报表的SQL源。
发布于 2022-03-25 07:01:16
要获取SELECT * FROM ...的列名,请查看DBMS_SQL.DESCRIBE_COLUMNS3。文档中有一个示例显示了如何打印列名。
然后,这可以在经典的报告中实现。
请注意,强烈建议断言sql查询以避免不必要的sql (如delete或drop命令)。
https://stackoverflow.com/questions/71602910
复制相似问题