OBIEE 回写(writeback)实例

本文介绍了如何在OBIEE中实现回写功能,包括前台报表配置、后台XML模板代码设置以及触发器的创建。虽然用户体验不佳且缺乏验证,但详细步骤可供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天把以前做过的一个obiee的一个回写功能回顾一下,以供参考。

Obiee的这个回写功能一般是不推荐使用的,本人在开发过程中觉得这个用户体验是相当的不好,而且是没有任何的验证功能。

实现这个功能的主要步骤分以下几步:

(1)在前台报表开通回写功能

打开一张报表,在结果中点击edit,坐上角有一个笔状的按钮,”回写属性“,填上模板名称和按钮名,像我这里是priviledge和‘确定’,这个模板名字要与下面的代码中的名字一致

 

(2)在设置的模板中添加相应的执行代码,一般在路径C:\OracleBIData\web\msgdb\customMessages的xml里面(你可以新建一个新的xml文件注:每个模板的名字都要不同)

在插入和更新中使用的都是更新的代码(本人试了多次,无法直接使用insert的代码来实现,在这里如果是插入的话会在对应id是0的行上做更新)

附上该模板的代码:

<WebMessage name="priviledge">
<XML>
<writeBack connectionPool="abc">
<insert>UPDATE  c_priviledge
SET p_id=CASE '@{c0}' when '0' then to_char((SELECT MAX(P_ID) + 1 FROM c_priviledge)) else '@{c0}' end,
    project_name=trim('@{c1}'),group_name=trim('@{c2}'),emp_id=trim('@{c3}'),emp_name=trim('@{c4}'),
user_name=trim('@{c5}'),priviledge=trim('@{c6}'),item=trim('@{c7}')
WHERE p_id='@{c0}'</insert>
<update>UPDATE c_priviledge
SET p_id=CASE '@{c0}' when '0' then to_char((SELECT MAX(P_ID) + 1 FROM c_priviledge)) else '@{c0}' end,
    project_name=trim('@{c1}'),group_name=trim('@{c2}'),emp_id=trim('@{c3}'),emp_name=trim('@{c4}'),
user_name=trim('@{c5}'),priviledge=trim('@{c6}'),item=trim('@{c7}')
WHERE p_id='@{c0}'</update>
</writeBack>
</XML>
</WebMessage>

(3)通过触发器生成一条新的用来完成插入操作的数据(即当id=0的行被插入数据后,生成一条新的id=0的空数据行)

CREATE OR REPLACE TRIGGER C_PRIVILEDGE_TR
  AFTER UPDATE ON c_priviledge
DECLARE
  V1 NUMBER;
BEGIN
  FOR C1 IN (SELECT 1 AS NUM
               FROM c_priviledge
              WHERE P_ID = 0) LOOP
    V1 := C1.NUM;
  END LOOP;
  IF V1 = 1 THEN
    NULL;
  ELSE
    INSERT INTO c_priviledge
      (P_ID)
    VALUES
      (0);
    COMMIT;
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    NULL;
END;

 

通过以上的步骤就可以实现一个完整的BIEE回写的功能,当然由于时间有限,应该还有很多地方有待完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值