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;