KingbaseES与Oracle的兼容性说明.pdf
KingbaseES 与 Oracle 的兼容性说明 金仓数据库管理系统 KingbaseES 文档版本:V9(V009R001C001B0024) 发布日期:2023 年 10 月 12 日 北京人大金仓信息技术股份有限公司 目 目 录 录 第 1 章 前言 1 1.1 适用读者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 相关文档 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3 术语 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.4 手册约定 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 2 章 数据类型 3 2.1 KingbaseES 数据类型到 Oracle 数据类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Oracle 数据类型到 KingbaseES 数据类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 第 3 章 常用函数 8 3.1 有区别的函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 无区别的函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 第 4 章 SQL 30 第 5 章 PL/SQL 34 版权声明 38 服务周期承诺 39 I 第 1 章 前言 1 第 章 前言 本文档描述了 KingbaseES 和 Oracle 的兼容性说明,包括数据类型、常见函数、SQL 语言、PL/SQL 和接口的 兼容性对比情况。 前言部分包含以下主题: • 适用读者 • 相关文档 • 术语 • 手册约定 1.1 适用读者 KingbaseES 和 Oracle 的兼容性说明面向所有使用 KingbaseES 的用户,主要是数据库管理员和应用程序开发人 员。 1.2 相关文档 有关更多 KingbaseES 使用信息,请参阅 KingbaseES 数据库文档集中的以下文档: • KingbaseES 数据库管理员指南 • KingbaseES 数据库开发指南 • KingbaseES_SQL 语言参考手册 • KingbaseES_PLSQL-SQL 过程语言参考手册 1 第 1 章 前言 术语 1.3 无 1.4 手册约定 本文档中可能出现“注意、提示、警告、另请参阅”等标志,它们所代表的含义如下: 注意: 用于突出重要/关键信息、最佳实践等。 提示: 用于突出小窍门、捷径等。 警告: 用于传递设备或环境安全警示信息,若不避免,可能会导致设备损坏、数据丢失、设备性能降低或其 它不可预知的结果。 另请参阅: 用于突出参考、参阅等。 以下程序代码书写约定适用于本文档: 符号 说明 [] 表示包含一个或多个可选项。不需要输入中括号本身。 {} 表示包含两个以上(含两个)的候选,必须在其中选取一个。不需要输入花括号本身。 | 分割中括号或者花括号中的两个或两个以上选项。不需要输入“|”本身。 ... 表示其之前的元素可以被重复。 斜体 表示占位符或者需要提供特定值的变量。 大写 表示系统提供的元素,以便与用户定义的元素相互区分。除出现在方括号中的元素外,应当按 照顺序逐字输入。当然,部分元素在系统中是大小写不敏感的,因此用户可以根据系统说明以 小写形式输入。 小写 表示由用户提供的元素。 2 第2章 数据类型 2 第 章 数据类型 2.1 KingbaseES 数据类型到 Oracle 数据类型转换 表 2.1.1: KingbaseES 数据类型到 Oracle 数据类型转换 序号 KingbaseES 数据类型 Oracle 数据类型 备注说明(KingbaseES) 1 tinyint NUMBER 单字节整数 -128 to +127 2 smallint NUMBER 小范围整数 -32768 to +32767 3 integer NUMBER 整数的典型选择 -2147483648 数值型 to +2147483647 4 bigint NUMBER 大范围整数 -9223372036854775808 to +9223372036854775807 5 decimal NUMBER 用户指定精度,精确最高小数 点前 131072 位,以及小数点 后 16383 位 6 numeric, number NUMBER 用户指定精度,精确最高小数 点前 131072 位,以及小数点 后 16383 位 7 real BINARY_FLOAT 可变精度,不精确 6 位十进制 精度 8 float FLOAT 见续表 3 第2章 数据类型 表 2.1.1 – 续表 序号 KingbaseES 数据类型 Oracle 数据类型 备注说明(KingbaseES) 9 double precision, double BINARY_DOUBLE 8 字节可变精度,不精确 15 位 十进制精度 10 smallserial NUMBER 自动增加的小整数 1 到 32767 11 serial NUMBER 自动增加的整数 1 到 2147483647 12 bigserial NUMBER 单字节整数 +1 to +9223372036854775807 字符型 1 character (n[char | byte]), CHAR/CLOB 定长,最大到 8000,空格填 充。当长度不大于 1000 时转 char(n[char | byte]) 换为 CHAR, 当长度超过 1000 则转换为 CLOB 2 character varying(n[char | VARCHAR2/CLOB 有限制的变长, 最大到 8000。 byte]), varchar(n[char | byte]), 当长度不大于 2000 时转换为 varchar2(n[char | byte]) CHAR, 当长度超过 2000 则转 换为 CLOB text CLOB 无限变长 1 clob CLOB 字符大对象 2 bytea BLOB 变长二进制串 3 blob BLOB 二进制大对象 timestamp [ (p) ] [ without TIMESTAMP 日期和时间(无时区) timestamp [ (p) ] with time TIMESTAMP() WITH TIME 包括日期和时间,有时区 zone ZONE 3 date DATE 日期 4 time [ (p) ] [ without time zone DATE 一天中的时间 3 大对象类型 日期时间 1 time zone ] 2 ] 见续表 4 第2章 数据类型 表 2.1.1 – 续表 序号 KingbaseES 数据类型 Oracle 数据类型 备注说明(KingbaseES) 5 time [ (p) ] with time zone DATE 仅仅是一天中的时间,带有时 区 6 interval year NUMBER 时间间隔 7 interval month NUMBER 时间间隔 8 interval day NUMBER 时间间隔 9 interval hour NUMBER 时间间隔 10 interval minute NUMBER 时间间隔 11 interval second FLOAT 时间间隔 12 interval year to month INTERVAL TO 时间间隔 INTERVAL DAY() TO SEC- 时间间隔 YEAR() MONTH 13 interval day to second OND 布尔类型 1 boolean NUMBER 状态为真或假 bit(n) bit varying(n) BLOB 一串 1 和 0 的串 xml XMLTYPE 用来存储 XML 数据 JSON JSON 用来存储 JSON 数据 位串类型 1 XML 类型 1 JSON 类型 1 2.2 Oracle 数据类型到 KingbaseES 数据类型转换 表 2.2.1: Oracle 数据类型到 KingbaseES 数据类型转换 序号 Oracle 数据类型 KingbaseES 数据类型 备注说明(Oracle) 见续表 5 第2章 数据类型 表 2.2.1 – 续表 数值型 1 NUMBER(p,s) numeric (precision, scale) 1.0 x |image16| 到 1.0 x |image17| 2 FLOAT float Number 的子类型 3 BINARY_FLOAT float 4 字节,单精度浮点数 4 BINARY_DOUBLE double 8 字节,双精度浮点数 1 CHAR char 定长字符串 2 VARCHAR2 varchar 变长字符串 3 NCHAR char Unicode 编码字符串 4 NVARCHAR2 varchar Unicode 编码字符串 DATE timestamp [ (p) ] [ without time 日期类型 字符型 日期时间 1 zone ] 2 DATE timestamp [ (p) ] [ without time 时间类型 zone ] 3 TIMESTAMP() WITH TIME timestamp [ (p) ] with time zone 带时区时间类型 timestamp [ (p) ] with time zone 带本地时区时间类型 interval year to month 时间间隔 interval day to second 时间间隔 ZONE 4 TIMESTAMP() WITH LOCAL TIME ZONE 5 INTERVAL DAY() TO SECOND 6 INTERVAL YEAR() TO MONTH 大对象类型 1 BLOB blob 二进制大对象 2 CLOB clob 字符大对象 3 NCLOB clob 存储 Unicode 数据 见续表 6 第2章 数据类型 表 2.2.1 – 续表 其他类型 1 LONG text 存储可变长字符串 2 RAW bytea 存储字符型数据 3 LONG RAW bytea 存储图像文档声音等二 进制数据 4 ROWID varchar 长度 64, 可以存储 A-Z, a-z, 0-9, + / 5 UROWID varchar 存储 Index -organized 表和外部表的地址 7 第3章 常用函数 3 第 章 常用函数 3.1 有区别的函数 表 3.1.1: 有区别的函数 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 1 / cbrt(dp) 立方根函数 2 / degrees(dp) 把弧度转换为角度 3 / radians(dp) 把角度转换为弧度 4 / div(y numeric,x numeric) y/x 的整数商 5 / pi() 常数值 数值函数 3.14159265358979 6 / scale(numeric) 返回参数的精度,小数 点后位数 字符函数 1 CHR(int,[USING NCHAR_CS]) chr(int) 返回 int 类型参数指 定 的 值 的 字 符,KingbaseES 不允许为 0, Oracle 可以输入 0 2 NCHR(number) / 返回 number 类型值的 国 际 字 符,KingbaseES 不支持超出字符范围的 数值 见续表 8 第3章 常用函数 表 3.1.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 3 REGEXP_REPLACE REGEXP_REPLACE (source_char, pattern, pattern, replacement [, position KingbaseES 的正 则中 replace_string, position, [, occurrence [, flag ] ] ] ) match_param 的意义 (source, 替 换 匹 配。Oracle 与 有部分不同导致结果不 occurrence, match_param) 同,可参考正则表达式 元语法。 4 REGEXP_COUNT regexp_count(source_char,pattern 返回匹配字符串数量。 (source_char, patter [,position, [,match_param]]) Oracle 与 KingbaseES 的某些数据类型不同 [,position [,match_param]]) 导 致 结 果 不 同, 例 如 time 类型。Oracle 与 KingbaseES 的正 则中 match_param 的意义 有部分不同导致结果不 同,可参考 正则表达式 元语法。 5 REGEXP_INSTR(source_char, regexp_instr(source_char,pattern 返 回 字 符 串 的 起 始 位 pattern[,position[,occurrence [,position[,occurrence 置, 或 者 结 束 位 置。 [,return_option[,match_param [,return_option [,match_param Oracle 与 KingbaseES [,subexpr]]]]]) [,subexpr]]]]]) 的某些数据类型不同 导 致 结 果 不 同, 例 如 time 类型。Oracle 与 KingbaseES 的正 则中 match_param 的意义 有部分不同导致结果不 同,可参考 正则表达式 元语法。 6 / strpos(string,substring) 返回指定字符串位置 position(substring in string) 7 convert(char,dest_char_set,source_char_set) convert(expr1 text,[,expr2 第 2、3 参数的顺序不同 text],expr3 text) 见续表 9 第3章 常用函数 表 3.1.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 8 NLS_INITCAP(char,[NLS_SORT INITCAP(string) 将每一个词的第一个字 = sort]) 母转换为大写形式并把 剩下的字母转换为小写 形式。 9 NLS_LOWER(char,nlsparam) 将字符串转换为小写形 lower(string) 式 10 CONCAT(char1,char2) concat(str ” any” [, str ” any” [, 串接所有参数的文本表 ...]]) 示。NULL 参数被忽 略。Oracle :支持 2 个 参数。KingbaseES :支 持多个参数 11 / regexp_matches(string text, pat- 返回对 string 匹配一个 tern text[,flags text]) POSIX 正则表达式得到 的所有子串 日期类函数 1 CURRENT_TIMESTAMP 返回当前日期时间区别 CURRENT_TIMESTAMP 是精度不同 (precision) 2 / age(timestamp,timestamp) 减去参数,生成一个使 age(timestamp) 用年、月(而不是只用 日)的” 符号化” 的结果 3 / clock_timestamp() 返回当前日期和时间 4 / date_part(text,timestamp) 返回日期时间的子域 date_part(text,interval) 5 6 TRUNC(date,fmt) TO_DSINTERVAL(sql_format) date_trunc(text,timestamp) 返回截断到参数指定的 date_trunc(text,interval) 日期时间 TO_DSINTERVAL sql_format | ( ’ { 构造一个 interval ds_iso_format } ’ [ DEFAULT return_value ON CONVERSION ERROR ] ) 7 / now() 返回当前日期和时间 序列函数 见续表 10 第3章 常用函数 表 3.1.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 1 / currval(regclass) 返回最近一次用 nextval 获取的指定序列的值 2 / nextval(regclass) 递增序列并返回新值 3 / setval(regclass,bigint) 设置序列的当前值 setval(regclass,bigint,boolean) 4 / lastval() 返回最近一次用 nextval 获取的任何序列的值 大对象函数 1 / clob_import(string,string) 将指定的文件以 clob 大对象的形式导入数据 库。 2 / clob_export(clob,string,string) 将 clob 大对象的内容导 出到磁盘文件。 3 / blob_import(string,string) 将指定的文件以 blob 大对象的形式导入数据 库。 4 / blob_export(blob,string,string) 将 blob 大对象的内容导 出到磁盘文件。 Environment 和 Identifier 函 数 1 / version() 返回当前版本号 COLLECT([DISTINCT array_agg(expression) 形 式 上 类 似:King- 分析和聚集函 数 1 UNIQUE] BY expr]) column [ORDER baseES 返回参数类型的 数组 Oracle 返回参数类 型的嵌套表 见续表 11 第3章 常用函数 表 3.1.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 2 CORR_KCORR_S(expr1,expr2, / 相关率 [COEFFICIENT ONE_SIDED_SIG ONE_SIDED_SIG_POS ONE_SIDED_SIG_NEG TWO_SIDED_SIG]) 3 MEDIAN(expr) / 返回中间值 4 STATS_BINOMIAL_TEST / 统计二项测试是一个精 确概率测试用于二分变 (expr1,expr2,p) 量,那里只有两个可能 值存在。它测试一个样 品之间的差异比例和给 定的比例 5 STATS_CROSSTAB(expr1,expr2) / 用于分析两个变量 6 STATS_F_TEST(expr1,expr2) 测试两个方差是否有明 / 显的不同 7 STATS_KS_TEST(expr1,expr2) / STATS_KS_TEST 是 柯尔莫哥洛夫斯米尔诺 夫函数,它比较 expr1 和 expr2,判断他们是 来自同一个总体还是来 自具有相同分布的总 体。 8 STATS_MODE(expr) / 将 expr 传入的一组值作 为分析对象,返回其中 出现频率最高的值。 9 STATS_MW_TEST(expr1,expr2) / 通过曼惠特尼测试比较 两个独立样本,以检验 两个总体具有相同分布 函数的零假设与两个不 同分布函数的备择假设 见续表 12 第3章 常用函数 表 3.1.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 10 STATS_ONE_WAY_ANOVA / 单向方差分析函数 (统 计一维方差分析) 测试 (expr1,expr2) 差异在意味着 (为团体 或变量), 通过比较两种 统计学意义不同的估计 方差 11 STATS_T_TEST_ONE(expr1) / 单样本检验 12 STATS_T_TEST_PAIRED / 双样本匹配检验 / 具有相同方差的两个独 (expr1,expr2) 13 STATS_T_TEST_INDEP 立组检验 (expr1,expr2) JSON 函数 1 / to_json(anyelement) 返回为 json 或者 jsonb to_jsonb(anyelement) 2 3 4 / / / array_to_json(anyarray 把数组作为一个 JSON [,pretty_bool]) 数组返回 row_to_json(record 把行作为一个 JSON 对 [,pretty_bool]) 象返回 json_build_array(VARIADIC ” 从一个可变参数列表构 any”) 造一个可能包含异质类 jsonb_build_array(VARIADIC ” 型的 JSON 数组。 any”) 5 / json_build_object(VARIADIC ” 从一个可变参数列表构 any”) 造一个 JSON 对象 jsonb_build_object(VARIADIC ”any”) 6 7 / / json_object(text[]) 从一个文本数组构造一 jsonb_object(text[]) 个 JSON 对象 json_array_length(json) 返回最外层 JSON 数组 jsonb_array_length(jsonb) 中的元素数量 见续表 13 第3章 常用函数 表 3.1.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 8 / json_each(json) 扩展最外层的 JSON 对 jsonb_each(jsonb) 象成为一组键/值对 json_each_text(json) jsonb_each_text(jsonb) 9 / json_extract_path(from_json 返回 path_elems 指向 json, VARIADIC 的 JSON 值(等效于 path_elems text[]) #> 操作符) jsonb_extract_path (from_json jsonb,VARIADIC path_elems text[]) 10 / 以文本返回由 json_extract_path_text text (from_json json, VARIADIC path_elems path_elems text[]) JSON 值(等效于 #» jsonb_extract_path_text 操作符) 指向的 (from_json jsonb,VARIADIC path_elems text[]) 11 12 13 14 15 / / / / / json_object_keys(json) 返回最外层 JSON 对象 jsonb_object_keys(jsonb) 中的键集合 json_populate_record(base 扩展 from_json 中的对 anyelement, from_json json) 象成一个行,它的列匹 jsonb_populate_record(base 配由 base 定义的记录类 anyelement, from_json jsonb) 型 json_populate_recordset(base 扩展 from_json 中最 anyelement, from_json json) 外的对象数组为一个集 jsonb_populate_recordset(base 合,该集合的列匹配由 anyelement, from_json jsonb) base 定义的记录类型 json_array_elements(json) 把一个 JSON 数组扩展 jsonb_array_elements(jsonb) 成一个 JSON 值的集合 json_array_elements_text(json) 把一个 JSON 数组扩展 jsonb_array_elements_text 成一个 text 值集合 (jsonb) 见续表 14 第3章 常用函数 表 3.1.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 16 / json_typeof(json) 把最外层的 JSON 值的 jsonb_typeof(jsonb) 类型作为一个文本字符 串返回 17 18 / / json_to_record(json) 从一个 JSON 对象构建 jsonb_to_record(jsonb) 一个任意的记录 json_to_recordset(json) 从一个 JSON 对象数组 jsonb_to_recordset(jsonb) 构建一个任意的记录集 合 19 / json_strip_nulls(from_json 返回具有空值对象域的 json) from_json。其它空值不 jsonb_strip_nulls(from_json 变 jsonb) 20 / jsonb_set(target jsonb, 若 create_missing 为真 path text[],new_value jsonb, (缺省是 true)并且通 [create_missing boolean]) 过 path 指定部分不存 在,那么返回 target, 它具有 path 指定部分, new_value 替换部分, 或者 new_value 添加部 分 21 22 / / jsonb_insert(target jsonb, 返 回 被 插 入 了 path text[], new_value jsonb, new_value [insert_after boolean]) target jsonb_pretty(from_json jsonb) 作为缩进 JSON 文本返 对应的 回 from_json 3.2 无区别的函数 15 第3章 常用函数 表 3.2.1: 无区别的函数 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 1 ABS(n) abs(x) 绝对值 2 ACOS(n) acos(x) acosd(x) 反余弦 3 ASIN(n) asin(x) asind(x) 反正弦 4 ATAN(n) atan(x) atand(x) 反正切 5 ATAN2(n1,n2) atan2(y, x) y/x 反正切 6 BIN_TO_NUM(expr,...) bin_to_num(expr ,...) 将二进制数转换为十进 数值函数 制。将任何数据类型或 可以隐式转换为数据类 型的非数据类型作为参 数,每个 expr 必须为 0 或 1。 7 BITAND (expr1,expr2) bitand(expr1,expr2 ) 按位与,参数类型都是 number 或者可以转换为 number 的 8 CEIL (n) ceil(dp or numeric) ceiling(dp or 不小于参数的最小整数 numeric) 9 EXP exp(dp or numeric) 指数 10 FLOOR floor(dp or numeric) 不大于参数的最大整数 mod(y, x) 11 MOD mod(y, x) y/x 的余数 12 NANVL(n2,n1) nanvl(n2 numeric, n1 numeric) 当 n2 为 NaN 时,函数 返回 n1 当 n2 不为 NaN 时,函数返回 n2,参数 类型是浮点数 13 SIGN sign(dp or numeric) 参数的符号(-1,0,+1) 14 WIDTH_BUCKET width_bucket(dp or numeric, dp 返回一个桶 or numeric, dp or numeric, int 15 LN(n) ln(dp or numeric) 自然对数 见续表 16 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 16 LOG(n2,n1) log(dp or numeric) log(b nu- KingbaseES 中单个参数 meric,x numeric) 是以 10 为底的对数两个 参数的形式 KingbaseES 和 Oracle 一致 17 POWER(n2,n1) power(a dp,bdp) power(a nu- 返回 a 的 b 次幂 meric,b numeric) 18 REMAINDER(n2,n1) remainder(n1 number, n2 num- 取第一个参数除以第二 ber) 个参数的余数,参数类 型是 number 或者可以 转换为 number 的 19 ROUND (n[,integer]) round(dp or numeric) round(v 圆整为最接近的整数圆 numeric,s int) 整为 s 位小数数字 20 SQRT (n) sqrt(dp or numeric) 平方根 21 TRUNC (n1[,n2]) trunc(dp or numeric) trunc(v nu- 截断(向零靠近)截断 meric,s int) 为 s 位小数位置的数字 TAN(n) tan(x) tand(x) 正切 SUBSTR substring (string [from int] [for 提取子串 22 字符函数 1 int]) 2 RPAD rpad(string text,length int [,fill 用字符串 expr3(第 text]) 三 个 参 数) 将字符串 expr1(第一个参数) 从 右边填充到指定的长度 expr2( 第二个参数),在 第三个参数缺省时,填 充空格。 3 REPLACE(char,search_string, replace(string text,from text,to 将 string 中出现的所有 replacement_string) text) 子串 from 替换为子串 to 见续表 17 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 4 REGEXP_SUBSTR(source_char, regexp_substr(string 5 KingbaseES 函数名 功能简要说明 在 string 搜索一个 pattern,position,occurrence, text,pattern [,position POSIX 正则表达式字符 match_param,subexpr) int [,occurrence int [,flags text 串,返回的搜索到的子 [,num int]]]]) 字符串 TRANSLATE(expr,from_string, translate(string text,from text, to string 中任何匹配 from to_string) text) 集合中一个字符的字符 text 会被替换成 to 集合中的 相应字符 6 INSTRB(string, substring, posi- instrb(expr1 text,expr2 tion, occurrence) [expr3 int [,expr4 int]]) text, 在父字符串 expr1 中 的第 expr3 个位置(从 1 开始)以字符为单位 开始查找第 expr4 次出 现的子字符串的位置, 0 表示不包含子字符串 expr2 。如果 expr3 为 负,则从 expr1 的倒数 第 expr3 个位置开始反 向查找,位置依然是从 字符串开头算起。 7 LENGTH length(string) length(string 返回字符串长度 bytea,encoding name) 8 reverse(str) reverse(str) 返回反转的字符串。 9 UPPER upper(string) 将字符串转换成大写形 式 10 LPAD(expr1 [,n,expr2]) lpad(string text,length int [,fill 将 string 通过前置字符 text]) fill (默认是一个空格) 填充到长度 length。 如果 string 已经长于 length ,则它被(从右 边)截断。 见续表 18 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 11 LTRIM(char,set) ltrim(string text 功能简要说明 [,characters 从 string 的开头删除最 长的只包含 characters text]) (默认是一个空格)的 字串。 12 RTRIM(char,set) rtrim(string text [,characters text]) 从 string 的结尾删除最 长的只包含 characters (默认是一个空格)的 字串。 13 TRIM([LEADING| TRAIL- ING | BOTH [trim_character] from] [trim_character trim([leading|trailing|both] [char- 从 string 的开头 /结 acters from] string) 尾/两端删除最长的只包 含 characters (默认是 from] 一个空格)的串 trim_source) 14 ASCII(char) ascii(string) 返回参数第一个字符的 ASCII 代码 15 LENGTHB(char) lengthb(string) 返回字符串的字节数 16 SUBSTRB(char,position[,sub substrb(expr1 text, [from] expr2 取子字符串,在父字符 string_length]) int[, [for] expr3 int]) 串 expr1(第一个参数) 中的第 expr2(第二个参 数) 个字节位置开始取 expr3(第三个参数) 个字 节,如果第三个参数缺 省,则从第 expr2 (第二 个参数) 个位置开始取 右面部分的全部,如果 第二个参数为负,则是 从父字符串的尾部截取 expr3 个字节。 日期时间 1 2 EXTRACT (field from expr) TO_CHAR(datetime,fmt) extract (fieldfrom timestamp) ex- 从当前日期时间抽取时 tract(field from interval) 间字段 to_char(timestamp,text) 日期时间转换为字符 见续表 19 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 3 ADD_MONTHS ( date , integer ADD_MONTHS (expr1 日期/时 返回 expr1 加上 expr2 ) 间类型, expr2 INT) 个月的日期时间值 LAST_DAY ( date ) LAST_DAY(expr1 日期/时间类 返回日期中的月份的最 型) 后一天 MONTHS_BETWEEN MONTHS_BETWEEN 返回日期的月份差 (date1,date2) (date1,date2) NEXT_DAY(date,char) NEXT_DAY(expr1 日期/时间类 返回 expr 1 日期后的第 型, expr2 TEXT) 一个由参数 expr2 命名 4 5 6 的日期,参数 expr2 的 值必须在周一到周日范 围中 7 SYSDATE SYSDATE 返回当前系统日期 8 SYSTIMESTAMP SYSTIMESTAMP 返回当前系统时间 9 TO_DATE(char, fmt) to_date(text, text) 返回日期值输入参数一 个是字符串,一个是数 字 10 TO_TIMESTAMP (char, fmt) TO_TIMESTAMP (char, fmt) 返回日期时间值输入参 数一个是字符串,一个 是数字 11 OVERLAPS OVERLAPS(start1,end1) 在两个时间域(用它们 (start2,end2) 的端点定义)重叠的时 候得到真,当它们不重 叠时得到假 12 CURRENT_DATE current_date 当前日期 EMPTY_BLOB() empty_blob() empty_clob() 返回空大对象 大对象函数 1 EMPTY_CLOB() Decoding 函数 见续表 20 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 1 DECODE(expr,search, sult,default) KingbaseES 函数名 re- decode(expr,search,result, fault) 功能简要说明 de- 将 expr 和 search 值一 个一个比较。如果相等 则返回 result 如果不等 返回 default 值。 NULL 相关函 数 1 COALESCE(expr,...) COALESCE(value [, ...]) COALE SCE 函数返回 它的第一个非空参数的 值。当且仅当所有参数 都为空时才会返回空。 2 LNNVL(condition) LNNVL(condition) 用于 where 条件中, condition 为真时返回 假,假时返回真 3 NULLIF(expr1,expr2) NULLIF(value1,value2) KingbaseES:value1 可 以为 null oracle:value1 不能为 null 4 NVL(expr1,expr2) NVL(expr1,expr2) 当 expr1 为 NULL 时, 用 expr2 代替本表达式 的值 5 NVL2(expr1,expr2,expr3) NVL2(expr1,expr2,expr3) 当 expr1 为 NULL 时, 返回值为 expr3;否则 为 expr2 6 NULLIF(value1,value2) NULLIF(value1,value2) 当 value1 和 value2 相等时,NULLIF 返回 一个空值。否则它返回 value1 Environment 和 Identifier 函 数 1 sys_guid() sys_guid() 返回一个全局唯一的标 识符 见续表 21 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 2 uid uid 返回目前执行环境下的 用户 ID 3 user User/current_user 返回当前用户 GREATEST(expr,expr,expr,...) GREATEST(expr,expr,expr,...) 选取最大或者最小的数 LEAST(expr,expr,expr,...) LEAST(expr,expr,expr,...) 值只要有一个参数是 比较函数 1 null,则结果返回 null 分析和聚集函 数 1 COUNT (* DISTINCT ALL expr count 非空的输入行的数目 covar_pop(Y,X) 总体协方差 covar_samp(Y,X) 样本协方差 ) 2 COVAR_POP(expr1,expr2) OVER(a nalytic_clause) 3 COVAR_SAMP(expr1,expr2) OVER(analytic_clause) 4 CUME_DIST(expr,) WITHIN GROUP(ORDER BY expr) cume_dist(args) GROUP WITHIN (ORDER 当前行的相对排名 BY sorted_args) 5 DENSE_RANK(expr,) WITHIN dense_rank(args) GROUP(ORDER BY expr) GROUP WITHIN (ORDER BY (measure_expr [,’de- 不带间隙的当前行排名 sorted_args) 3 LISTAGG(measure_expr, limiter) WITHIN de- GROUP (order_by_clause) listagg limiter’]) WITHIN (order_by_clause) GROUP 输入值连接成一个串, 用定界符分隔 [OVER query_partition_clause] 6 MAX (DISTINCT ALL expr ) max(expression) 所有输入值中 expression 的最大值 7 MIN (DISTINCT ALL expr ) min(expression) 所有输入值中 expression 的最小值 见续表 22 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 8 PERCENT_RANK(expr,) percent_rank(args) WITHIN GROUP(ORDER BY GROUP expr) sorted_args) PERCENTILE_CONT(expr) percentile_cont WITHIN GROUP (ORDER BY WITHIN GROUP (ORDER BY expr) sort_expression) PERCENTILE_DISC(expr) percentile_disc(fraction) WITHIN GROUP (ORDER BY WITHIN expr) BY sort_expression) RANK(expr,) WITHIN GROUP rank(args) ( ORDER BY expr) (ORDER BY sorted_args) 的行留下间隔 REGR_SLOPE regr_slope(Y, X) 由(X, Y)对决定的最 9 10 11 12 功能简要说明 WITHIN BY 围从 0 到 1 (fractions) 连续百分率 (ORDER GROUP WITHIN 假想行的相对排名,范 离散百分率 (ORDER GROUP 假想行的排名,为重复 小二乘拟合的线性方程 的斜率 13 REGR_INTERCEPT regr_intercept (Y, X) 由(X, Y)对决定的最 小二乘拟合的线性方程 的 y 截距 14 REGR_COUNT regr_count(Y, X) 两个表达式都不为空的 输入行的数目 15 STDDEV (DISTINC TALL expr stddev (expression) 输入值的样本标准偏差 ) 16 STDDEV_POP ( expr ) stddev_pop (expression) 输入值的总体标准偏差 17 STDDEV_SAMP ( expr ) stddev_samp (expression) 输入值的样本标准偏差 18 SUM (DISTINCT ALL expr ) sum(expression) 所有输入的 expression 的和 19 VAR_POP ( expr ) var_pop (expression) 输入值的总体方差 20 variance(expression) variance(expression) var_samp 的历史别名 21 var_samp(expression) var_samp(expression) 输入值的样本方差 22 FIRST FIRST 返回在窗口帧中第一行 上计算的 value 见续表 23 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 23 FIRST_VALUE * first_value (value any) 返回在窗口帧中第一行 上计算的 value 24 LAG lag(value anyelement [, offset in- 返回 value,它在分区内 teger [, default anyelement ]]) 当前行的之前 offset 个 位置的行上计算;如果 没有这样的行,返回 default 替代。(作为 value 必须是相同类型)。offse t 和 default 都是根据当 前行计算的结果。如果 忽略它们,则 offset 默 认是 1,default 默认是 空值 25 LAST LAST 返回在窗口帧中最后一 行上计算的 value 26 LAST_VALUE * last_value (value any) 返回在窗口帧中最后一 行上计算的 value 27 LEAD lead(value anyelement [, offset in- 返回 value,它在分区 teger [, default anyelement ]]) 内当前行的之后 offset 个位置的行上计算;如 果 没 有 这 样 的 行, 返 回 default 替 代。(作 为 value 必须是相同类 型)。offset 和 default 都 是根据当前行计算的结 果。如果忽略它们,则 offset 默认是 1,default 默认是空值 28 NTH_VALUE * nth_value(value any, nth integer) 返回在窗口帧中第 nth 行(行从 1 计数)上计 算的 value;没有这样的 行则返回空值 29 NTILE ntile (num_buckets integer) 从 1 到参数值的整数范 围,尽可能等分分区 见续表 24 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 30 ROW_NUMBER row_number() 当前行在其分区中的行 号,从 1 计 31 CORR ( expr1 , expr2 )[OVER ( corr(Y,X)[OVER(analytic_clause)] 相关系数 analytic_clause )] 32 OVER (ana- 所有输入值的平均值 AVG (DISTINCT ALL expr ) avg(expression) OVER ( analytic_clause ) lytic_clause) (算术平均) 1 XMLCOMMENT(value_expr) xmlcomment(text) 创建了一个 XML 值 2 XMLCONCAT xmlconcat(xml[, ...]) 由单个 XML 值组成 XML 函数 (XML- 的列表串接成一个单独 Type_instance) 的值,这个值包含一个 XML 内容片断 3 4 XMLELEMENT XMLFOR EST(value_expr) xmlelement(name name [, xmla 表达式 xmlelement 使用 ttributes(value [AS attname] [, ... 给定名称、属性和内容 ])] [, content, ...]) 产生一个 XML 元素。 xmlforest (content [AS name] [, 表达式 xmlforest 使用给 ...]) 定名称和内容产生一个 元素的 XML 森林(序 列)。 5 XMLPI xmlpi(name target [, content]) 表达式 xmlpi 创建一个 XML 处理指令。如果存 在内容,内容不能包含 字符序列 6 7 XMLROOT XMLAGG xmlroot(xml, version text | no 表达式 xmlroot 修改一 value [, standalone yes | no | no 个 XML 值的根结点的 value]) 属性 xmlagg(xml) 函数 xmlagg 是一个聚 集函数。它将聚集函数 调用的输入值串接起来 见续表 25 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 8 APPENDCHILDXML appendchildxml(xml, 将用户提供的值作为 XPath_string text, value_expr XPath 表达式指示的节 text[, nam espace_string]) 点的子节点附加到目标 XML 上 9 UPDATEXML updatexml(xml,XPath_string 将 XML 实例、XPath text,value_expr 及新的 xml 更新值对 text [,nam 作为参数,并返回 XML espace_string]) 具有更新值的实例 10 DELETEXML 删 除 “xml_instance deletexml(xml_instance xml, xpath text) dele- texml(xml_instance xml, xpath “实例中与“xpath“表 达式匹配的节点。 text, namespace _text) 11 INSERTCHILDXML insertchildxml(xml_instance 将 “value_expr“提 供 xml, xpath text, child_expr 的 值 作 为 “xpath“指 text , xml) in- 定节点的子节点插入到 sertchildxml(xml_instance xml, “xml_instance“中。 value_expr xpath text , child_expr text , value_expr xml, namespace _text) 12 INSERTCHILDXMLAFTER insertchildxmlafter 将 “value_expr“提 供 (xml_instance xml, xpath text, 的一个或多个集合元素 child_expr text , value_expr 作为“xpath“指定的目 insertchildxmlafter 标父元素的子元素插入 (xml_instance xml, xpath text 到 “child_expr“指 定 , child_expr text , value_expr 的现有集合元素之后。 xml) xml,namespace _text) 13 INSERTCHILDXMLBEFORE insertchildxmlbefore 将 “value_expr“提 供 (xml_instance xml, xpath text, 的一个或多个集合元素 child_expr text , value_expr 作为“xpath“指定的目 insertchildxmlbefore 标父元素的子元素插入 (xml_instance xml, xpath text 到 “child_expr“指 定 , child_expr text , value_expr 的现有集合元素之前。 xml) xml,namespace _text) 见续表 26 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 14 INSERTXMLAFTER insertxmlafter(xml_instance 将 “value_expr“提 供 xml, xpath text , value_expr 的值插入到“xpath“指 xml) insertxmlafter 定的节点之后。 (xml_instance xml, xpath text , value_expr xml,namespace _text) 15 INSERTXMLBEFORE (xml_instance 将 “value_expr“提 供 xml, xpath text , value_expr 的值插入到“xpath“指 xml) insertxmlbefore 定的节点之前。 (xml_instance xml, insertxmlbefore xpath text , value_expr xml,namespace _text) JSON 函数 1 JSON JSON ( expression [ FORMAT 把输入的字符串按 json JSON [ ENCODING UTF8 ]] [ { 或 jsonb 类型返回。 WITH | WITHOUT } UNIQUE [ KEYS ] ] [ RETURNING json_data_type ] ) 2 JSON_ARRAY JSON_ARRAY( [ { 函数通过 SQL 或者 数据构建一个 value_expression [ FORMAT JSON JSON ] } [, ...] ] [ { NULL JSON 数组。 | ABSENT } ON NULL ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]) 3 JSON_ARRAYAGG [ 函数将提供的 JSON 数 value_expression ] [ ORDER 据聚合到 JSON 数组 BY sort_expression ] [ { NULL 中。 JSON_ARRAYAGG ( | ABSENT } ON NULL ] [ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]) 见续表 27 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 功能简要说明 4 JSON_OBJECT json_object(text[]) json_object( JSON 处理函数,从文 keys 本数组中构造 JSON 对 text[], values text[]) json_object ( [ { key_expression 象。 { value | ’:’ } value_expression [ format json [ encoding utf8 ] ] }[, ...] ] [ { null | absent } on null ] [ returning data_type [ format json [ encoding utf8 ] ] ] [ { with | without } unique [ keys ] ] 5 JSON_OBJECT_AGG json_object_agg(name, value) 将 name 和 value 对聚合 成 JSON 对象,值可以 为空,名字不能为空。 6 JSON_QUERY (expres- 用于从一个输入的 json JSON 文本中根据指定的 json- UTF8]], path 路径检索所需的值 JSON_basic_path_expression [ (可以为标量值,也可 PASSING { value AS varname } 以为对象或者数组)。 json_query sion [FORMAT [ENCODING [, ...]][ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] [ { WITHOUT | WITH { CONDITIONAL| [UNCONDITIONAL] } }[ ARRAY ] WRAPPER ] [ { KEEP | OMIT } QUOTES [ ON SCALAR STRING ] ] [{ERROR| NULL| EMPTY| EMPTY ARRAY| EMPTY OBJECT| DEFAULT expression }ON EMPTY ] [{ERROR| NULL| EMPTY| EMPTY ARRAY| EMPTY DEFAULT OBJECT| expression } ON ERROR ]) 7 JSON_SCALAR json_scalar ( expression [ RE- 使用 JSON_SCALAR TURNING json_data_type ] ) 函数从 SQL 数据生成 JSON 标量值。 见续表 28 第3章 常用函数 表 3.2.1 – 续表 序号 Oracle 函数名 KingbaseES 函数名 8 JSON_SERIALIZE json_serialize FORMAT 功能简要说明 [ 表达式用于把 JSON 类 ENCOD- 型的数据转换为字符串 (expression JSON [ ING UTF8] ] [ RETURNING 或二进制字符串。 data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]) 9 JSON_TABLE json_table ( context_item, path_expression json_path_name ] ING AS { value } [, ...] ] 查询 JSON 数据并将结 [ AS 果显示为关系视图,可 [ PASS- 以作为常规 SQL 表访 varname 问。 COLUMNS ( json_table_column [, ...] ) [PLAN ( json_table_plan ) | PLAN DEFAULT ( { INNER | OUTER } [ , { CROSS | UNION } ] | { CROSS | UNION } [ , { INNER | OUTER } ] ) ] [{ERROR | EMPTY} ON ERROR] ) 10 JSON_VALUE for- 从一段给定的 json 文本 mat json [ encoding utf8 ] 中获取所需要的值,返 ],json_basic_path_expression 回为标量值或者用户自 [returning 定义的 object 或者 col- json_value( expression json_value_return_type [ ] [{ lection 类型。 null | error | default literal} on error] [{ null|error|default literal} on empty]) 层次查询函数 1 SYS_CONNECT_BY_PATH SYS_CONNECT_BY_PATH 返回从根元组到当前元 (column,char) (Expression,char) 组的路径,这个路径是 由 c har 字符分隔的在各 个元组上计算的 Expression 的值连接构成的。 29 第 4 章 SQL 4 第 章 SQL 表 4.1: KingbaseES 和 Oracle 的 SQL 兼容性说明 序号 功能 KingbaseES Oracle 1 层次查询 支持 支持 2 序列 支持 支持 3 ROWID 支持 支持 4 ROWNUM 支持 支持 1 CURRENT_CATALOG 支持 支持 2 CURRENT_ROLE 支持 支持 3 CURRENT_SCHEMA 支持 支持 4 CURRENT_USER 支持 支持 5 LOCALTIMESTAMP 支持 支持 6 NULL 支持 支持 7 SESSION_USER 支持 支持 8 SYSDATE 支持 支持 9 USER 支持 支持 常见表达式 支持 支持 伪列 常量 表达式 1 见续表 30 第 4 章 SQL 表 4.1 – 续表 序号 功能 KingbaseES Oracle 2 复合表达式:(expr)、{PRIOR}| {+}| {-} expr、expr 支持 支持 {*}| {/}| {+}| {–}| {||} expr、expr COLLATE collation_name 3 case when 支持 支持 4 列表达式:表列、常量、函数 支持 支持 5 时间日期表达式:expr AT LOCAL、expr AT TIME 支持 支持 自定义类型表达式:type_name (expr[,expr]... ) 支持 支持 常 见 比 较 表 达 式:=、! =、^=、<>、>、<、>=、 支持 支持 支持 支持 ZONE ’ +–hh : mi ’、expr AT TIME ZONE、 SESSIONTIMEZONE、expr AT TIME ZONE ’time_zone_name、expr AT TIME ZONE expr 6 条件比较 1 <=、op ANY、op SOME、op ALL 2 表达式通过 =、!=、^=、<> 这些符号与表达式列表或 子查询比较 3 逻辑比较:NOT / AND / OR 支持 支持 6 模糊匹配 LIKE 支持 支持 7 [NOT]BETWEEN ... AND 支持 支持 8 EXISTS(subquery) 支持 支持 9 [NOT]IN 支持 支持 1 表的创建、修改、删除 支持 支持 2 分区表的创建、删除 支持 支持 3 分区表的修改(add、drop、rename、truncate、、ex- 支持 支持 数据对象类型 change) 4 表空间的创建、修改、删除 支持 支持 5 视图的创建、修改、删除 支持 支持 见续表 31 第 4 章 SQL 表 4.1 – 续表 序号 功能 KingbaseES Oracle 6 视图的不可见(VISIBLE / INVISIBLE) 不支持 支持 7 自定义函数、存储过程的创建、修改、删除 支持 支持 8 包的创建、修改、删除 支持 支持 9 索引、全局索引的创建、删除 支持 支持 10 索引的重建、重命名 支持 支持 11 索引的禁用 (ENABLE / DISABLE) 支持 支持 12 索引的不可见(VISIBLE / INVISIBLE) 支持 支持 13 物化视图创建、删除、修改 (query_rewrite/ refresh/ 支持 支持 compile) 14 物化视图的刷新 支持 支持 15 触发器的创建、修改、删除 支持 支持 16 隐含列的创建、修改 支持 支持 17 约束创建、修改、删除 支持 支持 18 DIRECTORY 创建、修改、删除 支持 支持 19 OPERATOR 创建、修改、删除 支持 支持 20 DBLink 的创建、删除 支持 支持 21 同义词的创建、删除 支持 支持 1 表查询、连接查询、层次查询 支持 支持 2 dblink 远程查询、DML 操作同构数据库、DML 操作异 支持 支持 数据对象操作 构数据库-Oracle 3 MERGE 表、视图、子查询 支持 支持 4 INSERT 表、视图、子查询 支持 支持 5 INSERT ALL / FIRST 支持 支持 6 INSERT returning 子句 支持 支持 见续表 32 第 4 章 SQL 表 4.1 – 续表 序号 功能 KingbaseES Oracle 7 INSERT 子查询 支持 支持 8 UPDATE 表、视图、子查询 支持 支持 9 多列更新 支持 支持 10 UPDATE 表、视图、子查询 支持 支持 11 DELETE 表、视图 支持 支持 12 DELETE returning 子句 支持 支持 13 COPY 支持 支持 14 DELETE hint 不支持 支持 15 FLASHBACK 数据库 支持 支持 16 FLASHBACK 表 支持 支持 33 第 5 章 PL/SQL 5 第 章 PL/SQL 表 5.1: KingbaseES 和 Oracle 的 PL/SQL 兼容性说明 序号 功能 KingbaseES Oracle 1 SUBTYPE 支持 支持 2 PLS_INTEGER、BINARY_INTEGER 支持 支持 3 集合类型(NESTED TABLES、ASSOCIATIVE AR- 支持 支持 RECORD 支持 支持 1 条件控制语句(if、case) 支持 支持 2 循环控制语句(loop) 支持 支持 3 顺序语句 (goto、null) 支持 支持 1 嵌套子程序、包子程序、独立子程序 支持 支持 2 子程序调用 支持 支持 3 子程序声明 支持 支持 4 子程序异常处理 支持 支持 5 子程序声明 支持 支持 6 子程序参数 in、out、in out 模式 支持 支持 数据类型 RAYS、VARRAYS) 4 控制语句 子程序(存储过 程和函数) 见续表 34 第 5 章 PL/SQL 表 5.1 – 续表 序号 功能 KingbaseES Oracle 7 子程序参数参数个数支持 512 支持 支持 8 子程序重载 支持 支持 9 递归子程序 支持 支持 10 子程序重载 支持 支持 11 外部子程序-C 支持 支持 匿名块的创建、执行 支持 支持 1 语句级、行级、列级、时间、事件触发器 支持 支持 2 触发时机 before、after、instead of 支持 支持 3 触发器条件谓词(INSERTING/ UPDATING/ DELET- 支持 支持 匿名块 1 触发器 ING) 4 伪记录 OLD/NEW 支持 支持 5 事件触发器 支持 支持 6 触发器禁止和开启(ENABLE/DISABLE) 支持 支持 1 自定义包 支持 支持 2 内置系统包 DBMS_DDL 支持 支持 3 内置系统包 DBMS_JOB 支持 支持 4 内置系统包 DBMS_LOB 支持 支持 5 内置系统包 DBMS_METADATA 支持 支持 6 内置系统包 DBMS_MVIEW 支持 支持 7 内置系统包 DBMS_OBFUSCATION_TOOLKIT 支持 支持 8 内置系统包 DBMS_OUTPUT 支持 支持 9 内置系统包 DBMS_RANDOM 支持 支持 包 见续表 35 第 5 章 PL/SQL 表 5.1 – 续表 序号 功能 KingbaseES Oracle 10 内置系统包 DBMS_SCHEDULER 支持 支持 11 内置系统包 DBMS_SESSION 支持 支持 12 内置系统包 DBMS_SQL 支持 支持 13 内置系统包 DBMS_UTILITY 支持 支持 14 内置系统包 DBMS_SQL_MONITOR 支持 支持 15 内置系统包 OWA_UTIL 支持 支持 16 内置系统包 UTLENODE 支持 支持 17 内置系统包 UTL_HTTP 支持 支持 18 内置系统包 UTL_I18N 支持 支持 19 内置系统包 UTL_RAW 支持 支持 1 SELECT INTO 支持 支持 2 SELECT BULK COLLECT INTO 支持 支持 3 FORALL 语句 支持 支持 4 TABLE 表达式 支持 支持 5 伪列(CURRVAL、NEXTVAL、LEVEL) 支持 支持 6 隐 式 游 标:SQL%ISOPEN/ 支持 支持 显示游标的创建、使用 支持 支持 1 EXECUTE IMMEDIATE 支持 支持 2 DBMS_SQL 包的方法调用 支持 支持 静态 SQL SQL%NOTFOUND/ COUNT/ SQL%FOUND/ %ROW- SQL%BULK_ROWCOUNT/ SQL%BULK_EXCEPTIONS 7 动态 SQL 异常 见续表 36 第 5 章 PL/SQL 表 5.1 – 续表 序号 功能 KingbaseES Oracle 1 预定义异常 支持 支持 2 自定义异常 支持 支持 3 编译时警告信息 支持 支持 4 异常后重试事务 支持 支持 37 版权声明 版权声明 北京人大金仓信息技术股份有限公司(简称:人大金仓)版权所有,并保留对本手册及本声明的一切权利。 未得到人大金仓的书面许可,任何人不得以任何方式或形式对本手册内的任何部分进行复制、摘录、备份、修 改、传播、翻译成其他语言、将其全部或部分用于商业用途。 免责声明 本手册内容依据现有信息制作,由于产品版本升级或其他原因,其内容有可能变更。人大金仓保留在没有任何通 知或者提示的情况下对手册内容进行修改的权利。 本手册仅作为使用指导,人大金仓在编写本手册时已尽力保证其内容准确可靠,但并不确保手册内容完全没有错 误或遗漏,本手册中的所有信息也不构成任何明示或暗示的担保。 技术支持 • 人大金仓官方网站:http://www.kingbase.com.cn/ • 人大金仓文档中心:http://help.kingbase.com.cn/ • 全国服务热线:400-601-1188 • 人大金仓技术支持与反馈信箱:support@kingbase.com.cn 38 服务周期承诺 服务周期承诺 由于市场需求在不断变化,技术创新和发展的进程不断加剧,产品的版本更迭不可避免。人大金仓对于产品版本 生命周期的有效管理,有助于您提前规划项目,更好地从产品服务终止上过渡。 表 2: KingbaseES 产品生命周期里程碑 关键里程碑点 定义 产品发布日期 产品正式发布版本,即 GA(general availability)版本的发布日期。 停止销售日期 正式停止销售的日期,版本停止接受订单日。该日之后,产品将不再销售。 停止功能升级日期 在该日期之后,不再提供新特性和新硬件支持。但依旧提供错误修复、安全修复、功 能维护等服务。 停止功能维护日期 在该日期之后,不再维护功能,修复问题。但依旧提供安全修复等服务 停止安全维护日期 在该日期之后,不再发布补丁版本修复中高风险漏洞,仅提供有限的支持。 产品服务终止日期 停止提供产品服务和支持的日期。包括软件维护版本,缺陷修复,以及针对该产品的 所有服务支持(包括服务热线和远程/现场支持)。 服务周期策略 金仓数据库管理系统 KingbaseES 产品确保以下的服务周期: 1)产品自发布之日起至产品停止功能升级(包含新特性、新硬件支持)之日不少于 5 年。 2)产品停止功能升级之日起至产品停止功能维护(主要包括问题修复)之日不少于 4 年。 3)产品功能维护停止之日起至产品停止安全维护(包括中高风险漏洞修复)之日不少于 2 年。 服务终止策略 金仓数据库管理系统 KingbaseES 产品确保在销售后,至少提供 6 年的服务支持。 注意: 人大金仓将会综合各方因素来确定产品服务终止日期。并将在实际产品服务终止日期之前至少 90 天,通过公 39 服务周期承诺 开方式宣布产品服务终止日期。 40