通过函数在 IR 中显示 Html 标签

问题描述 投票:0回答:1

我有一个函数,在其中,我编写了一个案例来显示我们所看到的

img
标签:

 FUNCTION HTML_SAMPLE (...)
....
BEGIN

SELECT 
CASE "ISACTIVE"
             WHEN 1 THEN
              '<img src="#WORKSPACE_IMAGES#ok-icon.png" />'
             WHEN 0 THEN
              '<img src="#WORKSPACE_IMAGES#Button-no-icon.png" />'
           END "ISACTIVE_ICON"
FROM PERSONS;
....
END;

当我将它用于交互式报告时,它不会正确显示 html 标签!即使我设置了

escape special characters
off

还有一件奇怪的事情需要知道!当我直接在 IR 中使用函数中的表时,它将正常工作!而且img的来源也会不同!

这是我直接在 IR 中选择的内容:

 SELECT 
    CASE "ISACTIVE"
                 WHEN 1 THEN
                  '<img src="#WORKSPACE_IMAGES#ok-icon.png" />'
                 WHEN 0 THEN
                  '<img src="#WORKSPACE_IMAGES#Button-no-icon.png" />'
               END "ISACTIVE_ICON"
    FROM PERSONS;

怎么会发生这种事?我很困惑

oracle-apex
1个回答
0
投票

由于某种原因(我不知道为什么),函数应该只返回图像名称,而不返回 HTML 标签或图像位置。

CREATE OR REPLACE FUNCTION f_is_clerk (par_empno IN NUMBER)
   RETURN VARCHAR2
IS
   retval  VARCHAR2 (100);
BEGIN
   SELECT CASE
             WHEN job = 'CLERK' THEN 
                  'CB_CHECKED.JPG' 
                  -- Not this! '<img src="#WORKSPACE_IMAGES#CB_CHECKED.JPG"/>'
          END
     INTO retval
     FROM emp
    WHERE empno = par_empno;

   RETURN retval;
END;
/

应调整交互式报告查询,以便将 HTML 标签的起始部分和图像位置与函数结果和结束 HTML 部分连接起来:

  SELECT ename,
         job,
         CASE WHEN job = 'CLERK' THEN '<img src="#WORKSPACE_IMAGES#CB_CHECKED.JPG"/>' END is_clerk,
         --       
         '<img src="#WORKSPACE_IMAGES#' || f_is_clerk (empno) || '"/>' is_clerk_fnc
    FROM emp
   WHERE deptno = 10
ORDER BY ename;

然后 IR 按预期显示图像:


如果函数返回一切(如你的情况):

SELECT CASE WHEN job = 'CLERK' THEN '<img src="#WORKSPACE_IMAGES#CB_CHECKED.JPG"/>' END
INTO retval

IR 查询仅包含

f_is_clerk (empno) is_clerk_fnc

结果和你的一样:错误:

因此,请按照指示进行。希望其他人能够解释发生了什么;我不能。

© www.soinside.com 2019 - 2024. All rights reserved.