WebSphere Message Broker ESQL讲解

一、基本概念解读 
1.ESQL(Extended Structured Query Language):可扩展的结构化查询语言,是消息流编程的主要语言。 
2.数据类型:Boolean ,Datetime ,Numeric ,String和Reference。 
3.声明变量: 
DECLARE ref REFERENCE TO OutputRoot.XML.Person 
4.操作符: 
比较操作符:>、BETWEEN等 
逻辑操作符:AND、NOT等 
计算操作符:+、||等 
5.ESQL语句:程序执行的基本单位,调试断点只能设在语句行上。 
6.ESQL函数(Function):本身提供&用户自定义 
7.ESQL过程(Procedure):ESQL是过程化语言,函数体位于BEGIN…END中。 
8.ESQL模块(Module):一组变量、函数、过程的集合。 
9.引号:单引号表示字符串,双引号表示标识(比如保留字)。 
10.注释:行注释用“--”,段注释用“/*  */”。 

二、语句说明示例 
1.IF  …  END IF 
示例说明: 
IF j > MAX THEN 
SET j = MAX 
END IF; 

2.CASE … 
       WHEN (value/condition) THEN (statements) 
  END CASE 
示例说明: 
CASE CurrentMonth 
WHEN ‘01’ THEN Month = ‘January’ 
WHEN ‘02’ THEN Month = ‘February’ 
END CASE; 

3.FOR name AS reference DO statements 
   END FOR 
示例说明: 
SET I = 1; 
FOR Item AS MessageRoot.Invoice.Purchase.Item[] DO 
      SET MessageRoot.BasicStatement.FOR.Item[I] = Item; 
      END FOR; 

4.LOOP statements END LOOP 
注:LOOP语句会循环往复的执行statements部分的ESQL语句,在语法结构中是死循环,需要与ITERATE和LEAVE配合使用。 
示例说明: 
DECLARE I INT 0; 
X:LOOP 
SET I = I + 1; 
IF I > 3 THEN 
LEAVE X; 
END IF; 
END LOOP X; 

5.WHILE conditioon DO statements END WHILE 
示例说明: 
DECLARE I INTEGER 1; 
WHILE I <= 3 DO 
… 
SET I = I + 1; 
END WHILE; 

6.REPEAT statements UNTIL condition END REPEAT 
示例说明: 
DECLARE I INTEGER 1; 
X : REPEAT 
SET I = I + 1; 
UNTIL I >= 3 
END REPEAT X; 

7.LEAVE label 
功能说明: 
LEAVE语句可以将执行控制从带标签的WHILE、REPEAT、LOOP循环语句中跳出,也可以跳出标签的BEGIN…END块。 
示例说明: 
DECLARE I INTEGER 0; 
X : REPEAT 
IF I > 1 THEN 
LEAVE X; 
END IF; 
UNTIL FALSE; 
END REPEAT X; 

8.ITERATE label 
功能说明: 
ITERATE结束当前循环过程而直接跳到下一次。 
示例说明: 
DECLARE I INTEGER 0; 
X : REPEAT 
SET I = I + 1; 
IF I IN (2, 3) THEN 
ITERATE X; 
END IF; 
UNTIL I > 4 
END REPEAT X; 

三、函数说明示例 
字串操作函数  
1.UPPER(或UCASE)/LOWER(或LCASE) 
语法格式:UPPER/LOWER(String) 
说明示例:UPPER(‘abc’) 

2.LENGTH 
语法格式:LENGTH(String) 
说明示例:LENGTH(‘Hello world’) 返回11 

3.POSITION 
语法格式:POSITON(String IN String) 
说明示例:POSITION(‘A’ IN ‘ABC’) 返回1 

4.LEFT/RIGHT 
功能说明:拷贝源字符串中左起/右起长度为LENGTH的部分 
语法格式:LEFT(String, LENGHT) 
说明示例:LEFT(‘ABCD’, 2) 返回AB 

5.TRIM/LTRIM/RTRIM 
语法格式:TRIM(String) 
说明示例:LTRIM(‘  Hello’) 返回’Hello’ 

6.OVERLAY 
功能说明:将字串SourceString中从position开始且长度为length的部分覆盖替换成ReplaceString 
语法格式:OVERLAY(SourceString PLAYCING ReplaceString FROM position FOR length) 
说明示例:OVERLAY(‘ABCDEFG’ PLACING ‘123’ FROM 4 FOR 3) 
返回’ABCD123G’ 

7.SPACE 
功能说明:返回一个连续的number个空字符串 
语法格式:SPACE(number) 
说明示例:SPACE(3) 返回‘   ’ 

数学计算函数  
1.ABS(ABSVAL) 
功能说明:返回number的绝对值 
语法格式:ABS(number) 
说明示例:ABS(-12) 返回12 

2.SIGN 
功能说明:返回number的符号 
语法格式:SIGN(number) 
说明示例:SIGN(4) 返回1 
         SIGN(-1) 返回-1 
         SIGN(0) 返回0 

3.MOD 
功能说明:返回被除数dividend除以除数divisor后的余数 
语法格式:MOD(dividend, divisor) 
说明示例:MOD(7, 3) 返回1 

4.CEIL(CEILING)/FLOOR 
功能说明:对number按上限/下限取整 
语法格式:CEIL(number) 、FLOOR(number) 
说明示例:CEIL(1.3) 返回2 
         FLOOR(1.3) 返回1

5.SORT 
功能说明:返回数值的平方根 
语法格式:SORT(number) 
说明示例:SORT(4.0) 返回2E+0 

日期与时间函数  
ESQL提供了八种用于求日期与时间的函数: 

EXTRACT   提取时间元素,如年、月、日等 
CURRENT_DATE   返回当前本地日期 
CURRENT_TIME   返回当前本地时间 
CURRENT_TIMESTAMP 返回当前本地日期与时间 
CURRENT_GMTDATE   返回当前GMT日期 
CURRENT_GMTTIME 返回当前GMT时间 
CURRENT_GMTTIMESTAMP 返回当前GMT日期与时间 
LOCAL_TIMEZONE 返回本地时区与GMT的时差 

域操作函数  
ESQL提供了9个域操作函数 

ASBITSTREAM         将域类型转换成BLOB类型 
BITSTREAM         将域所在的一级子树内容转换成BLOB类型 
FIELDNAME         返回域名 
FIELDNAMESPACE          返回域名空间 
FIELDTYPE         返回域类型 
FIELDVALUE         返回域值 
FOR         检查是否所有或部分项满足条件 
LASTMOVE         检查上次指针赋值是否成功 
SAMEFIELD         检查两处域的地址是否相同 

集合操作函数  
ESQL提供4个集合操作函数: 

CARDINALITY 返回集合大小 
EXISTS 检查集合是否至少含有一个元素 
SINGULAR 检查集合是否只含有一个元素 
THE 返回集合中的第一个元素 

复杂操作函数  
ESQL提供了5个复杂操作函数: 

CASE 根据参数值或参数条件返回对应的内容 
CAST 类型转换 
SELECT 针对数据库表或消息字段进行选择操作 
ROW 形成单行数据 
LIST 形成数组数据 

数据库操作函数  
ESQL提供了4种数据库操作函数: 

SQLCODE         数据库操作返回码 
SQLERRORTEXT         数据库操作返回字串 
SQLNATIVEERROR         数据库操作错误码 
SQLSTATE 数据库操作状态码 

其他操作函数  
ESQL提供了5种其他操作函数: 

COALESCE 返回参数串的第一个非空值 
NULLIF 参数相等返回NULL,否则返回第一个参数 
PASSTHRU 将内容原封不动的提交并跳过Parser 
UUIDASBLOB 返回BLOB类型的UUID 
UUIDASCHAR 返回CHARACTER类型的UUID
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值