码迷,mamicode.com
首页 > 数据库 > 详细

使用DB2自带的SOAP UDF实现业务通知

时间:2014-12-15 15:13:18      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

DB2自带了WebService客户端的实现,具体命令如下:

启用命令:

db2enable_soap_udf -n dbName -u uID -p password [-force]
The parameters have the following definitions:
dbName - The database name to be enabled
uID user - ID for accessing the database
password - The password associated with the user ID
-force - Attempts to drop any existing functions.

如:db2enable_soap_udf -n MS_TRD -u zjyw -p 123456

启用成功后,可调用以下API接口:

db2xml.soaphttpv (VARCHAR(256), VARCHAR(256), VARCHAR(3072))
db2xml.soaphttpv (VARCHAR(256), VARCHAR(256), CLOB(1M))
db2xml.soaphttpc (VARCHAR(256), VARCHAR(256), varchar(3072))
db2xml.soaphttpc (VARCHAR(256), VARCHAR(256), CLOB(1M))
db2xml.soaphttpcl ( VARCHAR(256), VARCHAR(256), varchar(3072))

停用命令:

db2disable_soap_udf -n dbName -u uID -p password

调用步骤:

1、测试webService客户端与服务端的连通性

新建test.sql,编写如下代码:

 

connect to MS_TRD;
VALUES db2xml.soaphttpc(
http://191.168.0.209:8080/SHCH/services/shch,
http://191.168.0.209:8080/SHCH/services/shch.shchHttpEndpoint/,
varchar (<SendMessage xmlns="http://axis2.shch.xtp.xquant.com"><action>81</action><requestXml>12345</requestXml></SendMessage>
)
);

 在DB2命令窗口中执行:db2 -tvf d:\test.sql

成功调用后,就可以继续写DB2函数供存储过程或者触发器调用了

2、新建表TTRD_UDF,具体见使用 DB2 触发器和Java UDF实现业务通知

 

3、新增10000条测试数据

begin atomic 
 declare v_cnt int;
 set v_cnt=0;
 while (v_cnt<10000) do 
 insert into TTRD_UDF(CODE, NAME, REMARK) values (rtrim(char(v_cnt+100000)),test, -);
 set v_cnt=v_cnt+1;
 end while;
end

 

4、新建DB2函数

CREATE FUNCTION zjyw.SENDMESSAGE2 (symbol VARCHAR(100))
RETURNS VARCHAR(1000)
LANGUAGE SQL CONTAINS SQL
EXTERNAL ACTION NOT DETERMINISTIC
RETURN
VALUES db2xml.soaphttpc(
http://191.168.0.209:8080/SHCH/services/shch,
http://191.168.0.209:8080/SHCH/services/shch.shchHttpEndpoint/,
varchar (<SendMessage xmlns="http://axis2.shch.xtp.xquant.com"><action>81</action><requestXml>‘|| + symbol + ||‘</requestXml></SendMessage> ) ) )

5、新建TTRD_UDF触发器

CREATE TRIGGER ZJYW.AFTER_UPDATE_UFT
AFTER UPDATE OF NAME ON ZJYW.TTRD_UDF
REFERENCING OLD AS OLDROW NEW AS NEWROW
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
IF(NEWROW.NAME<>‘‘)
THEN
VALUES(SENDMESSAGE2(OLDROW.CODE));
END IF;
END;

6、测试批量修改10000条数据性能

update zjyw.TTRD_UDF set NAME=TEST2

全部执行完成耗时36分17秒,性能很一般。

如果WebService服务端未开启时,触发器会超时等待,实用性比较差。

使用DB2自带的SOAP UDF实现业务通知

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/chugf/p/4164799.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!