运行时解析 PL/SQL 的 Oracle Apex Cards 视图
Posted
技术标签:
【中文标题】运行时解析 PL/SQL 的 Oracle Apex Cards 视图【英文标题】:Oracle Apex Cards View with PL/SQL Parsed at Runtime 【发布时间】:2015-12-22 11:32:31 【问题描述】:我正在尝试让卡片报告视图与 Oracle Apex 一起使用,但由于 this SO question 中提到的一个错误,我正在尝试使用在运行时解析的查询。
为查询选择了“使用通用列名(仅在运行时解析查询)”。
不幸的是,卡片视图需要正确的列标题才能工作。这是我的代码:
DECLARE
l_query VARCHAR2(4000);
l_app number := v('APP_ID');
l_session number := v('APP_SESSION');
--Bug happens on the ':11:' part, page 1 works fine
l_url VARCHAR2(500) := (APEX_UTIL.PREPARE_URL(
p_url => 'f?p=' || l_app || ':11:' || l_session || '::NO:::'
));
BEGIN
l_query:=
'SELECT
post_id,
user_id as "CARD_SUBTEXT",
image as "CARD_IMAGE",
title as "CARD_TITLE",
''' || l_url || ''' as "CARD_LINK",
text as "CARD_TEXT"
FROM posts';
IF v('P1_TEXT_SEARCH') IS NOT NULL THEN
l_query := l_query||' '||'
WHERE
(
CONTAINS(title, ''$' || :P10_TEXT_SEARCH || ''') > 0
) OR
(
CONTAINS(text, ''$' || :P10_TEXT_SEARCH || ''') > 0
)
';
END IF;
htp.p(l_query);
RETURN l_query;
END;
如下所示:
有什么想法可以让它发挥作用吗?
【问题讨论】:
为什么要使用通用列名选项? 因为this bug 在这种情况下,您可以复制卡片报告模板,并将新模板中的列引用#CARD_TEXT#
等更改为#COL01#
等?
谢谢,这似乎是正确的方向。但是,我复制了卡片报告模板,然后对其进行了编辑(我无法编辑主模板)。现在它在报告中出现“未找到数据”。也许需要另一个 SO 问题
没关系,快到了!谢谢
【参考方案1】:
正如 Tony Andrews 所指出的,我可以复制和编辑模板以将值设置为 #COL1#
、#COL2#
...
【讨论】:
以上是关于运行时解析 PL/SQL 的 Oracle Apex Cards 视图的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 pl sql 过程从结构仅在运行时知道的 oracle 表中动态获取数据?
Oracle PL/SQL 使用 XMLTABLE 解析 xml 中的嵌套对象