突然的自我
如果说 拥有你是上天对我的宽容 那又何必 开这样的玩笑 当你 找到幸福的哪天 请你不要忘记 有一个人 永远爱着你..

1.   应用场景

   使用MB连接数据库,对取出的数据进行处理。

     (本文讲的是在MB中导入jar包,通过ESQL调用jar包中的函数操作获取Oracle数据库)

1.1. Jar包的配置

1.新建java工程,导入jdbc包,oralce 的包在{oracle安装目录}\ oracle\product\10.2.0\db_1\jdbc\lib 下的ojdbc14.jar。

2.添加类

    类中的方法必须全部是静态方法

3.将此工程导出jar包

  将此工程中用到的jar包全部拷贝到C:\Documents and Settings\All Users\Application Data\IBM\MQSI\shared-classes 目录下。

 

1.2. MB的配置

1.请先按《MB连接Oracle》这篇文档配置,确保可以连接oracle。

2.请阅读《MB调用jar》

3.如果调用的jar中的函数,返回的数据为 XML格式时,请在MQ中添加队列,命名为“QConvertData”

      因为虽然jar返回的是xml格式的数据,但还是字符型,需要配置一个MQOutput点和Compute(用来将jar返回的数据保存在out数据流中,认为是数据转换节点)列名需要写为刚才创建的队列名(QConvertData)

      创建MQInput,队列名为“QConvertData”(刚才创建的队列名),其输出端口连接操作数据库的Compute

4.在ESQL ,将《MB调用jar》调用jar方法对象返回的值写到数据流中

      为数据转换节点设置调ESQL,在CREATE FUNCTION Main() RETURNS BOOLEAN中添加

         SET OutputRoot.Properties.MessageType='';

        SET OutputRoot.Properties.MessageSet='';

        SET OutputRoot.Properties.MessageFormat='';

    SET OutputRoot.BLOB.BLOB=CAST(name  as BLOB CCSID 1208);

   其中 name 就是调用后台代码返回的值。1208代码编码格式,1381代表GBK.

5.在操作数据库的Compute节点中,添加相应的sql语句

      常用的函数 CARDINALITY(获取xml某个节点子项数量)

   用法 :DECLARE inpass REFERENCE TO InputRoot.XMLNSC.Users;

                DECLARE J INTEGER CARDINALITY(inpass.*[]);

   ESQL循环:

以 WHILE 条件  DO开始,以结束 END WHILE;

ESQL判断:

以IF ref.Class = 'F' THEN开始,中间可以添加 ELSE,以结束 END IF;

 

posted on 2012-05-17 15:08  突然的自我  阅读(428)  评论(0编辑  收藏  举报