1. 关于过滤POSTCODE LIKE '%8%'
CDC里面支持过滤条件,但过滤条件只能是个布尔值;而你所列的条件的返回值非布尔值,所以可以考虑定义一个存储过程,通过存储过程来判断。满足条件时存储过程返回值为1,否则为0。然后看在过滤条件中判断该行是否满足条件。
此处,对于ADDRESS到CUST_ADDRESS的表映射,需要定义的过滤条件为:
%USERFUNC("STOREDPROC","DB2INST1.SELECT_POSTCODE",POSTCODE)=1
进行的操作就是先调用存储过程DB2INST1.SELECT_POSTCODE,POSTCODE为存储过程的输入值。关于%USERFUNC的语法,请查看:
http://pic.dhe.ibm.com/infocenter/cdc/v6r5m1/index.jsp?topic=%2Fcom.ibm.cdcdoc.mcadminguide.doc%2Frefs%2Fuserfunc.html
存储过程DB2INST1.SELECT_POSTCODE代码:
@
CREATE OR REPLACE PROCEDURE SELECT_POSTCODE
(OUT RESULT1 int, IN POSTCODE VARCHAR(10))
LANGUAGE SQL
BEGIN
IF(POSTCODE LIKE '%8%') THEN
SETRESULT1=1;
ELSE