如何根据 APEX 交互式网格查询中的替换字符串获取列值?
How to get the column value based on the substitution string in APEX Interactive grid query?
我必须在 APEX Interactive 网格的某些列中传递动态隐藏项值。
to_char(&P1_ITEM)
P1_ITEM -> YR_2020(YR_2020是table中的列名,列值=1000)
如果我在查询中传递 :P1_ITEM,我将在报告中获取项目字符串。如何获取列值(1000)而不是项目字符串(YR_2020)?
CASE WHEN P1_ITEM = 'YR_2021' 然后 YR_2021
其他 &P1_ITEM
我的其他部分正在返回项目字符串。
谢谢
此行为是预期的。无法在 pl/sql 中使用绑定变量来定义您的列名。绑定变量被解释为它具有的值而不是列名。
对于下面的例子,来源
SELECT :P45_SELECTED_COL FROM emp
执行的select将是:
SELECT 'ENAME' FROM emp;
而不是你想要的:
SELECT ENAME FROM emp;
apex 中的解决方法是使用类型“函数 Body 返回 SQL 查询”并在 运行 之前动态生成查询。
下面是 emp/dept 示例数据集的示例。
请注意,顶点引擎需要能够在编译时解析查询,否则会出错,因此您必须提供默认值(因此第 2 行的 NVL
)。
下面是对 emp table 的查询示例,其中第一列是通过页面项目确定的。
DECLARE
l_selected_col VARCHAR2(100) := NVL(:P45_SELECTED_COL,'ENAME');
l_statement VARCHAR2(4000):=
q'!
select ##SELECTED_COL## AS COL1,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
from EMP!';
BEGIN
RETURN REPLACE(l_statement,'##SELECTED_COL##',l_selected_col);
END;
要将报告中的列 header 调整为 selected 列,请将列标题属性设置为 &P45_SELECTED_COL.
我必须在 APEX Interactive 网格的某些列中传递动态隐藏项值。
to_char(&P1_ITEM)
P1_ITEM -> YR_2020(YR_2020是table中的列名,列值=1000)
如果我在查询中传递 :P1_ITEM,我将在报告中获取项目字符串。如何获取列值(1000)而不是项目字符串(YR_2020)?
CASE WHEN P1_ITEM = 'YR_2021' 然后 YR_2021
其他 &P1_ITEM
我的其他部分正在返回项目字符串。
谢谢
此行为是预期的。无法在 pl/sql 中使用绑定变量来定义您的列名。绑定变量被解释为它具有的值而不是列名。
对于下面的例子,来源
SELECT :P45_SELECTED_COL FROM emp
执行的select将是:
SELECT 'ENAME' FROM emp;
而不是你想要的:
SELECT ENAME FROM emp;
apex 中的解决方法是使用类型“函数 Body 返回 SQL 查询”并在 运行 之前动态生成查询。 下面是 emp/dept 示例数据集的示例。
请注意,顶点引擎需要能够在编译时解析查询,否则会出错,因此您必须提供默认值(因此第 2 行的 NVL
)。
下面是对 emp table 的查询示例,其中第一列是通过页面项目确定的。
DECLARE
l_selected_col VARCHAR2(100) := NVL(:P45_SELECTED_COL,'ENAME');
l_statement VARCHAR2(4000):=
q'!
select ##SELECTED_COL## AS COL1,
JOB,
MGR,
HIREDATE,
SAL,
COMM,
DEPTNO
from EMP!';
BEGIN
RETURN REPLACE(l_statement,'##SELECTED_COL##',l_selected_col);
END;
要将报告中的列 header 调整为 selected 列,请将列标题属性设置为 &P45_SELECTED_COL.