You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Oracle 12C提取图片至BIP报表时遇问题求助

在BIP报表中展示Oracle 12C数据库图片列报错的解决方案

我需要在BIP中创建报表,展示Oracle 12C数据库SIGTEXT列存储的客户图片,要实现和Oracle前端应用一致的显示效果,但插入图片时出现错误。使用的查询SQL语句如下:

SELECT sg.SIGNAME,
       mg.CIFID,
       decode(mg.IMGTYPE, 'I', 'Image', 'S', 'Signature') image_type,
       mg.SIGTEXT
  FROM table2 mg, table1 sg 
 WHERE mg.CIFID = '02222002'
   AND mg.CIFID = sg.CIFID

报错提示:无法显示图像,图像格式可能不受支持、文件已损坏、或加载图像的安全限制阻止了显示。


解决步骤:

  • 确认列存储格式:Oracle前端能正常显示,说明SIGTEXT列存储的是二进制图像数据(如BLOB),BIP无法直接渲染原始二进制,需要转换编码。
  • 修改SQL生成Base64编码:
    将查询语句调整为把二进制数据转为Base64字符串,方便BIP渲染:
    SELECT sg.SIGNAME,
           mg.CIFID,
           decode(mg.IMGTYPE, 'I', 'Image', 'S', 'Signature') image_type,
           UTL_ENCODE.BASE64_ENCODE(mg.SIGTEXT) AS SIGTEXT_BASE64
      FROM table2 mg, table1 sg 
     WHERE mg.CIFID = '02222002'
       AND mg.CIFID = sg.CIFID
    
  • 配置BIP图像组件:
    添加图像组件后,在其URL属性中使用内联Base64格式:
    • 如果是图片(IMGTYPE='I'),填写 data:image/jpeg;base64,{SIGTEXT_BASE64}(根据实际格式替换jpeg为png等)
    • 如果是签名(IMGTYPE='S'),通常用png格式,填写 data:image/png;base64,{SIGTEXT_BASE64}
  • 验证数据完整性:
    用DBMS_LOB.GETLENGTH(mg.SIGTEXT)检查列数据长度,确认没有数据截断情况,避免因数据损坏导致渲染失败。
  • 检查BIP安全设置:
    确认BIP服务器未限制内联图像加载,报表的安全策略允许使用data:协议的图像资源。

内容的提问来源于stack exchange,提问作者Ashoqullah Rahmani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:11:02