我有一个函数,在其中,我编写了一个案例来显示我们所看到的
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;
怎么会发生这种事?我很困惑
由于某种原因(我不知道为什么),函数应该只返回图像名称,而不返回 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
结果和你的一样:错误:
因此,请按照指示进行。希望其他人能够解释发生了什么;我不能。