专题内容简介:
1.基本概念解读
2.语句说明示例
3.函数说明示例
一、基本概念解读
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