KingbaseES数据库:兼容 SQL 语法及 Oracle 过程化语言的语法基础

140 阅读34分钟

KingbaseES数据库:兼容 SQL 语法及 Oracle 过程化语言的语法基础

KingbaseES数据库:兼容 SQL 语法及 Oracle 过程化语言的语法基础,KingbaseES 数据库(Oracle 模式)以内核兼容为基础,实现了涵盖内核、工具和接口的全方位 Oracle 兼容,当前 Oracle 常用能力兼容性达 100%,能助力客户应用无感平滑迁移。在基础能力上,它兼容 SQL 语法、Oracle 过程化语言语法基础,覆盖数据类型、伪列、常用表达式、系统视图、内置函数等多方面;高级能力方面,支持 ROWID、BFILE 等特殊类型,DBLink 访问、物化视图等功能,还兼容客户端编程接口及 Oracle XML/JSON 能力,具备对等 GIS 处理能力。具体来看,数据类型兼容全部 Oracle 支持类型,内置函数兼容大部分且部分有细微差异,系统视图兼容部分静态数据字典视图与动态性能视图,SQL 和 PL/SQL 语法也支持绝大部分 Oracle 相关语法。

在这里插入图片描述

一、Oracle兼容性总览

本节主要介绍 KingbaseES 数据库(Oracle 模式)与原生 Oracle 数据库的兼容性对比信息。

KingbaseES以内核兼容为基础,打造出涵盖内核、工具和接口的全方位 Oracle 兼容能力。当前Oracle常用能力兼容性已达100%。KingbaseES除兼容基本能力外,还兼容PL/SQL内置包、DBLink等高级能力,从而在客户应用移植时,实现应用无感、平滑迁移。

在基础能力方面,KingbaseES兼容SQL 语法及Oracle过程化语言的语法基础,完成了对数据类型、伪列、常用表达式和条件、系统视图、内置函数、模式对象定义、DML、DQL语句,以及控制语句、存储过程/函数、匿名块、触发器、静态SQL、动态SQL等各方面的兼容。

在高级能力方面,KingbaseES支持ROWID,BFILE等特殊类型,支持DBLink同异构数据库访问,物化视图,分区操作,支持完备的内置包功能,提供对客户端通用编程接口(ODBC,JDBC等)和自有接口(OCI,OCCI,Pro*C等)的全面支持,以及兼容Oracle XML/JSON能力,实现对半结构化文档型数据的处理等。此外,KingbaseES还提供了与Oracle对等的空间数据GIS处理能力。

在这里插入图片描述

主要从以下几个方面介绍 KingbaseES 数据库与 Oracle 数据库的兼容性对比信息:

  • 数据类型
  • 内置函数
  • 系统视图
  • SQL操作
  • PL/SQL操作

二、数据类型

本节主要介绍 Kingbase 数据库的 Oracle 模式对原生 Oracle 数据库中数据类型的兼容情况。

Oracle数据类型兼容情况说明

序号Oracle数据类型KingbaseES兼容情况
1CHAR兼容
2VARCHAR兼容
3VARCHAR2兼容
4NCHAR兼容
5NVARCHAR2兼容
6NUMBER兼容
7FLOAT兼容
8BINARY_FLOAT兼容
9BINARY_DOUBLE兼容
10INT兼容
11SMALLINT兼容
12DATE兼容
13TIMESTAMP兼容
14TIMESTAMP WITH TIME ZONE兼容
15TIMESTAMP WITH LOCAL TIME ZONE兼容
16INTERVAL DAY TO SECOND兼容
17INTERVAL YEAR TO MONTH兼容
18BLOB兼容
19CLOB兼容
20NCLOB兼容
21BFILE兼容
22RAW兼容
23LONG RAW兼容
24JSON兼容
25XML兼容
26ROWID兼容
27UROWID兼容
28LONG兼容

三、内置函数

本节主要介绍 KingbaseES 数据库的 Oracle 模式与原生 Oracle 数据库中内置函数的详细兼容对比信息。

(一)数字函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1ABS兼容返回一个给定数字的绝对值
2ACOS兼容返回一个给定数字的反余弦值
3ASIN兼容返回一个给定数字的反正弦值
4ATAN兼容返回一个给定数字的反正切值
5ATAN2兼容返回两个给定数字的反正切值
6BITAND兼容返回两个给定数字按位进行AND运算后的结果
7CEIL兼容返回大于等于指定值的最小整数
8COS兼容返回一个给定数字的余弦值
9COSH兼容返回一个给定数字的反余弦值
10EXP兼容返回e的n(给定数字)次幂
11FLOOR兼容返回小于或等于指定值的最大整数
12LN兼容返回一个给定数字的自然对数
13LOG兼容返回以第一个参数为底的第二个参数的对数
14MOD兼容返回第一个参数除以第二个参数的余数
15NANVL兼容若第一个参数是‘NaN’,返回第二个参数,否则返回第一个参数;若任意一个参数为NULL,则返回NULL
16POWER兼容计算数值幂次方,第一个参数是底数,第二个参数是指数
17REMAINDER兼容计算第一个参数除以第二个参数的余数
18ROUND(NUMBER)兼容返回四舍五入后的数值
19SIGN兼容根据参数是0、正数或负数,分别返回0、1或-1
20SIN兼容返回给定弧度值的正弦
21SINH兼容返回指定数值的双曲正弦
22SQRT兼容返回给定输入数字的平方根
23TAN兼容返回指定弧度值的正切
24TANH兼容返回指定数值的双曲正切
25TRUNC(NUMBER)兼容截断数值
26WIDTH_BUCKET兼容返回指定值位于桶中的位置

(二)返回字符串的字符函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1CHR兼容,但有差异返回指定ASCII码的字符。KingbaseES不允许输入0,Oracle允许输入0
2CONCAT兼容字符串拼接
3INITCAP兼容将第一个字母变为大写,其它字母变为小写
4LOWER兼容将所有字母全部变为小写
5LPAD兼容从左边对字符串使用指定的字符进行填充
6LTRIM兼容从字符串左侧删除字符
7NLS_INITCAP兼容将第一个字母变为大写,其它字母变为小写,允许指定转换时使用的排序规则
8NLS_LOWER兼容返回给定字符串的小写形式,允许指定转换时使用的排序规则
9NLS_UPPER兼容返回给定字符串的大写形式,允许指定转换时使用的排序规则
10NLSSORT兼容依据指定的排序规则,生成字符值 CHAR 的排序关键字
11REGEXP_REPLACE兼容,但有差异用于字符串匹配替换。Oracle与KingbaseES的正则中match_param的意义有部分不同导致结果不同,可参考正则表达式元语法
12REGEXP_SUBSTR兼容通过正则表达式搜索并返回与正则表达式匹配的字符串
13REPLACE兼容将字符串的指定字符替换为另一个字符(多用于表中字段)
14RPAD兼容从右边对字符串使用指定的字符进行填充
15RTRIM兼容从字符串右侧删除字符
16SUBSTR兼容从指定位置截取指定字符数的字符串
17TRANSLATE兼容替换字符串多个单个字符
18TRIM兼容删除字符串的前导或尾随字符,或者同时删除前导和尾随字符
19UPPER兼容将所有字母全部变为大写

其中KingbaseES的NLS_UPPER、NLS_LOWER和NLS_INITCAP函数,和UPPER、LOWER、INITCAP函数相比,可以指定使用的Collation。下表列出了Oracle的Collation名称和KingbaseES的Collation名称的映射关系:

Oracle CollationKingbaseES Collation
ASCII7c
BIG5zh_TW
BINARYc
GBKzh_CN.gbk
GENERIC_Mucs_basic
SCHINESE_STROKE_Mzh_CN
SCHINESE_PINYIN_Mzh_CN
TCHINESE_RADICAL_Mzh_TW
TCHINESE_STROKE_Mzh_TW
UCA1210_SCHINESEzh_CN.utf8
UCA1210_SCHINESE1zh_CN.utf8
UCA1210_SCHINESE2zh_CN.utf8
UCA1210_TCHINESEzh_TW.utf8
UCA1210_TCHINESE1zh_TW.utf8
UCA0700_SCHINESEzh_CN.utf8
UCA0700_SCHINESE1zh_CN.utf8
UCA0700_SCHINESE2zh_CN.utf8
UCA0700_TCHINESEzh_TW.utf8
UCA0700_TCHINESE1zh_TW.utf8
UCA0620_SCHINESEzh_CN.utf8
UCA0620_SCHINESE1zh_CN.utf8
UCA0620_SCHINESE2zh_CN.utf8
UCA0620_TCHINESEzh_TW.utf8
UCA0620_TCHINESE1zh_TW.utf8

(三)返回数值的字符函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1ASCII兼容返回指定字符的ASCII码
2INSTR兼容基于字符查找字符串第一个字符在另一个字符串中出现的位置
3LENGTH兼容返回字符串的字符数
4REGEXP_COUNT兼容,但有差异返回匹配字符串数量。Oracle与KingbaseES的某些数据类型不同导致结果不同,例如time类型。Oracle与KingbaseES的正则中match_param的意义有部分不同导致结果不同,可参考正则表达式元语法
5REGEXP_INSTR兼容,但有差异返回字符串的起始位置,或者结束位置。Oracle与KingbaseES的某些数据类型不同导致结果不同,例如time类型。Oracle与KingbaseES的正则中match_param的意义有部分不同导致结果不同,可参考正则表达式元语法

(四)时间日期函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1ADD_MONTHS兼容用于在给定的日期上增加或减少指定数量的月份
2CURRENT_DATE兼容当前会话时区中的日期
3CURRENT_TIMESTAMP兼容,但有差异当前会话时区中的日期和时间,差异是精度不同
4EXTRACT(datetime)兼容从日期时间中提取时间字段(YEAR、MONTH、DAY、HOUR、MINUTE、SECOND)
5LAST_DAY兼容返回给定日期所在月份的最后一天
6LOCALTIMESTAMP兼容以TIMESTAMP数据类型返回当前会话时区中的日期和时间
7MONTHS_BETWEEN兼容返回两个给定日期之间的月数
8NEW_TIME兼容将日期从指定时区转换为另一个指定时区
9NEXT_DAY兼容返回晚于给定日期的指定周一到周日的日期
10NUMTODSINTERVAL兼容时间间隔(DAY、HOUR、MINUTE、SECOND)
11NUMTOYMINTERVAL兼容日期间隔(YEAR、MONTH)
12TZ_OFFSET兼容返回指定时区的时区偏移量
13ROUND(DATE)兼容将给定的日期四舍五入到指定的单位
14SESSIONTIMEZONE兼容返回当前会话时区的值
15SYSDATE兼容返回系统当前日期和时间
16SYSTIMESTAMP兼容返回系统当前日期和时间
17TO_CHAR(DATATIME)兼容返回一个VARCHAR2类型的字符串
18TO_DSINTERVAL兼容将给定字符串转为INTERVAL DAY TO SECOND类型的值
19TO_TIMESTAMP兼容将给定字符串转为TIMESTAMP类型的值
20TO_TIMESTAMP_TZ兼容将给定字符串转为TIMESTAMP WITH TIME ZONE类型的值
21TO_YMINTERVAL兼容将给定字符串转为INTERVAL MONTH TO YEAR类型的值
22TRUNC (DATE)兼容将给定的日期截断到指定的单位

(五)一般比较函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1GREATEST兼容返回给定参数列表中的最大值
2LEAST兼容返回给定参数列表中的最小值

(六)转换函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1ASCIISTR兼容返回给定字符串的ASCII版本
2BIN_TO_NUM兼容将二进制数转换为十进制
3CAST兼容将参数从一种类型转换为另一种类型
4CHARTOROWID兼容将 CHAR、VARCHAR2、NCHAR 或 NVARCHAR2 数据类型 的值转换为 ROWID数据类型
5CONVERT兼容,但有差异Oracle与KingbaseES均用于字符串的字符集转换,但是第二个参数和第三个参数的顺序不同
6HEXTORAW兼容将给定的16进制的值转换为RAW类型的值
7NUMTODSINTERVAL兼容将给定的数字转换为 INTERVAL DAY TO SECOND 常量
8NUMTOYMINTERVAL兼容将给定的数字转换为 INTERVAL YEAR TO MONTH 常量
9RAWTOHEX兼容将RAW类型的值转换为16进制的值
10RAWTONHEX兼容将RAW类型的值转换为包含十六进制表示的字符值
11TREAT兼容用于将一个类型的表达式显式转换为其子类型的表达式
12ROWIDTOCHAR兼容将ROWID值转换为字符数据类型
13TO_BINARY_DOUBLE兼容将输入的数据(可以是字符型、数值型等)转换为 BINARY_DOUBLE 数据类型
14TO_BLOB(BFILE)兼容将BFILE值转换为BLOB值
15TO_BLOB(RAW)兼容将RAW值转换为BLOB值
16TO_CHAR(BFILEBLOB)兼容将BFILE或BLOB数据转换为数据库字符集,以VARCHAR2值返回
17TO_CHAR(CHARACTER)兼容将 NCHAR、NVARCHAR2、CLOB 或 NCLOB 数据转换为数据库字符集,以VARCHAR2值返回
18TO_CHAR(DATETIME)兼容将给定的日期时间或间隔值根据指定的格式转化为字符串
19TO_CHAR(NUMBER)兼容将给定的数值转换为VARCHAR2类型
20TO_CLOB(BFILEBLOB)兼容将BFILE或BLOB数据转换为数据库字符集,以CLOB值返回
21TO_CLOB(CHARACTER)兼容将LOB列中的NCLOB值或其他字符串转换为CLOB值
22TO_DATE兼容将给定的字符串转换为DATE数据类型的值
23TO_DSINTERVAL兼容将给定的字符串转换为 INTERVAL DAY TO SECOND 类型的值
24TO_MULTI_BYTE兼容将给定参数的所有单字节字符转换为相应的多字节字符
25TO_NCHAR(CHARACTER)兼容将CHAR、VARCHAR2、CLOB或NCLOB值转换为国际字符集
26TO_NCHAR(DATETIME)兼容将给定的日期时间或间隔值根据指定的格式转化为字符串
27TO_NCHAR(NUMBER)兼容将给定的数字转换为国际字符集中的字符串
28TO_NCLOB兼容将LOB列中的CLOB值或其他字符串转换为NCLOB值
29TO_NUMBER兼容将给定的参数转换为NUMBER类型的值,若存在字母,则只保留数字
30TO_SINGLE_BYTE兼容将给定参数的所有多字节字符转换为相应的单字节字符
31TO_TIMESTAMP兼容将给定的字符串转换为TIMESTAMP类型的值
32TO_TIMESTAMP_TZ兼容将给定的字符串转换为TIMESTAMP WITH TIME ZONE类型的值
33TO_YMINTERVAL兼容将给定的字符串转换为INTERVAL MONTH TO YEAR类型的值
34UNISTR兼容以国际字符集返回给定的字符数据

(七)大对象函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1BFILENAME兼容返回与服务器文件系统上的物理 LOB 二进制文件相关联的 BFILE定位器
2EMPTY_BLOB兼容返回空BLOB
3EMPTY_CLOB兼容返回空CLOB

(八)集合函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1CARDINALITY兼容返回嵌套表中元素的个数

(九)层次函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1SYS_CONNECT_BY_PATH兼容仅在分层查询中有效,返回列值从根节点到节点的路径

(十)XML函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1EXISTSNODE兼容检查XPath指定的XML节点是否存在,若存在,返回1;若不存在,返回0
2EXTRACT(XML)兼容返回XPath指定的一个节点下的所有值
3EXTRACTVALUE兼容返回XPath指定一个节点下的一个值
4XMLAGG兼容函数XMLAGG是一个聚集函数。它将聚集函数调用的输入值串接起来,允许表中数据跨行串接
5XMLCOMMENT兼容创建一个XML值,它包含一个使用指定文本作为内容的XML注释
6XMLCONCAT兼容由单个XML值组成的列表串接成一个单独的值,这个值包含一个XML内容片段
7XMLELEMENT兼容,但有差异使用给定名称、属性和内容生成一个XML元素,语法详见 XMLELEMENT
8XMLEXISTS兼容返回XPath表达式指定的节点是否存在
9XMLFOREST兼容使用给定名称和内容产生一个元素的XML森林(序列)
10XMLPARSE兼容解析XML
11XMLPI兼容创建一个XML处理指令。如果存在content,content不能包含字符序列
12XMLSEQUENCE兼容接收一个XML实例,返回一个XML数组,配合table()函数,可以将数组转换为表的形式查询
13XMLSERIALIZE兼容将XML数据转换为字符串形式
14XMLTABLE兼容将XML数据转换为表的形式
15APPENDCHILDXML兼容将value_expr提供的值作为XPath表达式指示的节点的子节点附加到目标XML上
16DELETEXML兼容删除XML实例中与XPath表达式匹配的节点
17INSERTCHILDXML兼容将value_expr提供的值作为XPath指定节点的子节点插入到XML实例中
18INSERTCHILDXMLAFTER兼容将value_expr提供的一个或多个集合元素作为XPath指定的目标父元素的子元素插入到child_expr指定的现有集合元素之后
19INSERTCHILDXMLBEFORE兼容将value_expr提供的一个或多个集合元素作为XPath指定的目标父元素的子元素插入到child_expr指定的现有集合元素之前
20INSERTXMLAFTER兼容将value_expr提供的值插入到XPath指定的节点之后
21INSERTXMLBEFORE兼容将value_expr提供的值插入到XPath指定的节点之前
22UPDATEXML兼容将XML实例、XPath及新的XML值对作为参数,返回具有更新值的XML实例
23PATH兼容用于定位XML文档中的节点位置等
24XMLROOT兼容用于指定XML文档的根元素

说明:以下函数为Oracle新版本已废弃特性,为兼容旧版本,KingbaseES仍然支持:

  • APPENDCHILDXML
  • DELETEXML
  • INSERTXMLBEFORE
  • INSERTXMLAFTER
  • INSERTCHILDXMLBEFORE
  • INSERTCHILDXMLAFTER
  • INSERTCHILDXML
  • UPDATEXML

(十一)JSON函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1JSON_ARRAY兼容通过SQL或者JSON数据构建一个JSON 数组
2JSON_ARRAYAGG兼容JSON_ARRAYAGG是一个聚集函数,将一列SQL表达式作为输入,将每个表达式转换为JSON值,并返回包含这些JSON值的单个JSON数组
3JSON Type Constructor兼容把输入的字符串按JSON或JSONB类型返回
4JSON_OBJECT兼容将一系列键值对或一个对象类型实例作为其输入,返回一个JSON对象,其中包含每个键值对的对象成员
5JSON_OBJECTAGG兼容JSON_OBJECTAGG是一个聚集函数,属性键值对作为其输入,该函数为每个键值对构造一个对象成员,并返回一个包含这些对象成员的JSON对象
6JSON_QUERY兼容从一段给定的文本中获取所需要的值,返回值可以为一个值也可以为多个值
7JSON_SCALAR兼容JSON_SCALAR接受SQL标量值作为输入,并返回相应的JSON标量值作为JSON格式类型实例
8JSON_SERIALIZE兼容将SQL数据类型(JSON、VARCHAR2、CLOB或BLOB)的JSON数据作为输入,并返回其文本表示
9JSON_TABLE兼容JSON_TABLE创建JSON数据的关系视图
10JSON_VALUE兼容从一段给定的JSON文本中获取所需要的值,返回为标量值或者用户自定义的OBJECT或者COLLECTION类型

(十二)编码解码函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1DECODE兼容将 expr 和 search 值进行比较。如果相等则返回result;如果不等返回default值,如果省略默认值,则返回空值(NULL)
2ORA_HASH兼容计算给定表达式的哈希值

(十三)NULL相关函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1COALESCE兼容返回参数列表中的第一个非NULL值
2LNNVL兼容用于WHERE条件中,condition为真时返回假,假时返回真
3NANVL兼容为值为NaN的参数提供一个默认值
4NULLIF兼容,但有差异比较两个参数,若参数相等就返回NULL,否则返回第一个参数。KingbaseES:两个参数可以为NULL;Oracle:两个参数不可以为NULL
5NVL兼容当第一个参数为NULL时,用第二个参数代替本表达式的值
6NVL2兼容当第一个参数为NULL时,返回第三个参数的值,否则返回第二个参数的值

(十四)环境和标识符函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1SYS_CONTEXT兼容返回当前时刻与给定上下文相关联的给定的参数的值
2SYS_GUID兼容返回一个全局唯一的标识符
3UID兼容返回当前会话的用户的唯一标识
4USER兼容返回当前会话的用户名称
5USERENV兼容返回有关当前会话的信息

(十五)聚集函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1ANY_VALUE兼容根据 GROUP BY 规范返回每个组中的任何值
2AVG兼容所有输入值的平均值(算术平均)
3CORR兼容相关系数
4COUNT兼容非空的输入行的数目
5COVAR_POP兼容总体协方差
6COVAR_SAMP兼容样本协方差
7CUME_DIST兼容当前行的相对排名
8DENSE_RANK兼容不带间隙的当前行排名
9FIRST兼容获取首行(可能有并列的情况)的非排序字段的值
10GROUPING兼容在分组查询中标识所有的行
11GROUPING_ID兼容返回与行关联的 GROUPING 位向量对应的数字
12JSON_ARRAYAGG兼容JSON_ARRAYAGG是一个聚集函数,将一列SQL表达式作为输入,将每个表达式转换为JSON值,并返回包含这些JSON值的单个JSON数组
13JSON_OBJECTAGG兼容JSON_OBJECTAGG是一个聚集函数,属性键值对作为其输入,该函数为每个键值对构造一个对象成员,并返回一个包含这些对象成员的JSON对象
14LAST兼容获取尾行(可能有并列的情况)的非排序字段的值
15LISTAGG兼容输入值连接成一个串,用定界符分隔
16MAX兼容所有输入值中表达式的最大值
17MIN兼容所有输入值中的表达式的最小值
18PERCENT_RANK兼容假想行的相对排名,范围从0 到 1
19PERCENTILE_CONT兼容连续百分率
20PERCENTILE_DISC兼容离散百分率
21RANK兼容假想行的排名,为重复的行留下间隔
22REGR_ (Linear Regression) Functions兼容用于对一组数字对拟合最小二乘回归线
23STDDEV兼容输入值的样本标准偏差
24STDDEV_POP兼容输入值的总体标准偏差
25STDDEV_SAMP兼容输入值的样本标准偏差
26SUM兼容所有输入的表达式的和
27VAR_POP兼容输入值的总体方差
28VAR_SAMP兼容输入值的样本方差
29VARIANCE兼容var_samp的历史别名
30XMLAGG兼容函数XMLAGG是一个聚集函数。它将聚集函数调用的输入值串接起来,允许表中数据跨行串接

(十六)分析函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1AVG兼容所有输入值的平均值(算术平均)
2CORR兼容相关系数
3COUNT兼容非空的输入行的数目
4COVAR_POP兼容总体协方差
5COVAR_SAMP兼容样本协方差
6CUME_DIST兼容当前行的相对排名
7DENSE_RANK兼容不带间隙的当前行排名
8FIRST兼容获取首行(可能有并列的情况)的非排序字段的值
9FIRST_VALUE兼容返回一组排序值后的第一个值的分析函数
10LAG兼容返回value,它在分区内当前行的之前offset个位置的行上计算;如果没有这样的行,返回default替代。(作为value必须是相同类型)。offset和default都是根据当前行计算的结果。如果忽略它们,则offset默认是1,default默认是空值
11LAST兼容获取尾行(可能有并列的情况)的非排序字段的值
12LAST_VALUE兼容返回一组排序值后的最后一个值的分析函数
13LEAD兼容返回value,它在分区内当前行的之后offset个位置的行上计算;如果没有这样的行,返回default替代。(作为value必须是相同类型)。offset和default都是根据当前行计算的结果。如果忽略它们,则offset默认是1,default默认是空值
14LISTAGG兼容输入值连接成一个串,用定界符分隔
15MAX兼容所有输入值中表达式的最大值
16MIN兼容所有输入值中的表达式的最小值
17NTH_VALUE兼容返回在窗口帧中第nth行(行从1计数)上计算的value;没有这样的行则返回空值
18NTILE兼容从1到参数值的整数范围,尽可能等分分区
19PERCENT_RANK兼容假想行的相对排名,范围从0 到 1
20PERCENTILE_CONT兼容连续百分率
21PERCENTILE_DISC兼容离散百分率
22RANK兼容假想行的排名,为重复的行留下间隔
23REGR_ (Linear Regression) Functions兼容用于对一组数字对拟合最小二乘回归线
24ROW_NUMBER兼容当前行在其分区中的行号,从1计
25STDDEV兼容输入值的样本标准偏差
26STDDEV_POP兼容输入值的总体标准偏差
27STDDEV_SAMP兼容输入值的样本标准偏差
28SUM兼容所有输入的表达式的和
29VAR_POP兼容输入值的总体方差
30VAR_SAMP兼容输入值的样本方差
31VARIANCE兼容var_samp的历史别名

(十七)对象引用函数

序号Oracle函数名KingbaseES是否兼容功能简要说明
1VALUE兼容将对象表的一行相关联的关联变量 (表别名)作为参数,并返回存储在对象表中的对象实例

四、系统视图

本节主要介绍 KingbaseES 数据库的 Oracle 模式对于 Oracle 数据库视图的兼容程度,当前 KingbaseES 已兼容 Oracle 部分静态数据字典视图及部分动态性能视图。

(一)静态数据字典视图

KingbaseES 数据库兼容 Oracle 数据库的静态数据字典视图列表如下:

视图名用途
ALL_ALL_TABLES描述当前用户可以访问的对象表和关系表
ALL_ARGUMENTS列出了当前用户可以访问的过程和函数的参数
ALL_COL_COMMENTS描述当前用户可访问的所有序列
ALL_COL_PRIVS当前用户下可以查看的所有列级权限,既包括 USER_COL_PRIVS中的内容,同时也包含 GRANTEE 是当前角色的列级权限
ALL_CONS_COLUMNS描述当前用户可访问的所有约束的列
ALL_CONSTRAINTS描述当前用户可以访问的表上的约束定义
ALL_DB_LINKS数据库中dblink外部链接的信息
ALL_DIRECTORIES数据库中目录信息
ALL_IND_COLUMNS描述当前用户所能获取到的表上建有索引的列信息
ALL_INDEXES描述当前用户所能获取到的表上的索引信息
ALL_OBJECTS当前用户下可以查看的所有对象
ALL_PART_TABLES显示当前用户所拥有及能访问到的所有分区表,其字段与 DBA_PART_TABLES相同
ALL_SCHEDULER_EXCEPTION记录用户可访问的处于异常状态的schedule作业信息。视图结构与 DBA_SCHEDULER_EXCEPTION 相同
ALL_SCHEDULER_JOB_LOG记录用户可访问的schedule中作业的日志信息。视图结构与 DBA_SCHEDULER_JOB_LOG相同
ALL_SCHEDULER_JOB_RUN_DETAILS记录用户可访问的schedule中作业的详细日志信息。视图结构与 DBA_SCHEDULER_JOB_RUN_DETAILS 相同
ALL_SCHEDULER_JOBS记录用户可访问的schedule的作业的信息。视图结构与 DBA_SCHEDULER_JOBS相同
ALL_SCHEDULER_PROGRAMS记录用户可访问的scheduler存储过程的信息。视图结构与 DBA_SCHEDULER_PROGRAMS 相同
ALL_SCHEDULER_SCHEDULES记录用户可访问的scheduler计划的信息。视图结构与 DBA_SCHEDULER_SCHEDULES 相同
ALL_SEQUENCES描述当前用户可访问的所有序列
ALL_SOURCE描述当前用户可访问的存储对象的文本源
ALL_SYNONYMS描述当前用户所能查看的同义词信息
ALL_TAB_COLS描述了当前用户可以访问的表,视图的列。视图结构与 DBA_TAB_COLS相同
ALL_TAB_COLUMNS描述了当前用户可以访问的表,视图的非隐藏列。视图结构与 DBA_TAB_COLUMNS相同
ALL_TAB_COMMENTS在当前用户可以访问的表和视图上显示注释
ALL_TAB_PARTITIONS显示当前用户所拥有的所有分区,字段与 DBA_TAB_PARTITIONS 相同
ALL_TAB_PRIVS描述当前用户对所有对象授予。视图结构与 DBA_TAB_PRIVS相同
ALL_TABLES当前用户下可以查看的所有表
ALL_TRIGGER_COLS描述当前用户可访问的所有触发器的列
ALL_TRIGGERS描述当前用户可访问的所有触发器
ALL_TYPES描述当前用户可以访问的对象表和关系表
ALL_USERS列出当前用户可见的数据库的所有用户
ALL_VIEWS描述当前用户所能查看的所有的视图信息
DBA_ALL_TABLES描述当前数据库所有的对象表和关系表。视图结构与 ALL_ALL_TABLES相同
DBA_ARGUMENTS列出数据库中可用的过程和函数的参数。视图结构与 ALL_ARGUMENTS结构相同
DBA_COL_COMMENTS在数据库中所有表和视图的列上显示注释。视图结构与 ALL_COL_COMMENTS相同
DBA_COL_PRIVS所有列级权限。与 ALL_COL_PRIVS 视图结构相同
DBA_CONS_COLUMNS描述约束中指定的数据库中的所有列。视图结构与 ALL_CONS_COLUMNS相同
DBA_CONSTRAINTS描述当前用户所拥有的表的所有约束定义。视图结构与 ALL_CONSTRAINTS相同
DBA_DB_LINKS数据库中dblink外部链接的信息。视图结构与 ALL_DB_LINKS相同
DBA_DIRECTORIES数据库目录信息。视图结构与 ALL_DIRECTORIES 相同
DBA_FREE_SPACE数据库中每个表空间的可用空间
DBA_IND_COLUMNS数据库中所有建有索引的列的信息。视图结构与 ALL_IND_COLUMNS相同
DBA_INDEXES数据库中所有索引的信息。视图结构与 ALL_INDEXES 相同
DBA_OBJECTS当前用户下可以查看的所有对象
DBA_PART_TABLES显示数据库内所有分区表,其字段与 ALL_PART_TABLES 相同
DBA_ROLE_PRIVS授予所有用户的角色以及数据库中的角色
DBA_ROLES列出数据库中存在的所有角色
DBA_SCHEDULER_EXCEPTION记录数据库中所有处于异常状态的schedule作业信息
DBA_SCHEDULER_JOB_LOG记录数据库中所有schedule中作业的日志信息
DBA_SCHEDULER_JOB_RUN_DETAILS记录数据库中所有schedule中作业的详细日志信息
DBA_SCHEDULER_JOBS记录数据库中所有schedule的作业的信息
DBA_SCHEDULER_PROGRAMS记录数据库中所有scheduler存储过程的信息
DBA_SCHEDULER_SCHEDULES记录数据库中所有scheduler计划的信息
DBA_SEQUENCES数据库中所有的序列。视图结构与 ALL_SEQUENCES 相同
DBA_SOURCE描述数据库中所有存储对象的文本源。视图结构与 ALL_SOURCE相同
DBA_SYNONYMS数据库中所有同义词的信息。视图结构与 ALL_SYNONYMS 相同
DBA_TAB_COLS描述当前所在数据库中,所有的表、视图的列信息
DBA_TAB_COLUMNS描述当前所在数据库中,所有的表、视图的非隐藏列信息
DBA_TAB_COMMENTS显示数据库中所有表和视图的注释。视图结构与 ALL_TAB_COMMENTS相同
DBA_TAB_PARTITIONS显示DBA所拥有的所有分区。视图结构与 ALL_TAB_PARTITIONS 相同
DBA_TAB_PRIVS描述数据库中的所有对象授予。视图结构与 ALL_TAB_PRIVS相同
DBA_TABLES当前数据库中的所有表
DBA_TABLESPACE描述数据库中的表空间。视图结构与 DBA_TABLESPACES 相同
DBA_TABLESPACES描述数据库中的所有表空间
DBA_TRIGGER_COLS数据库中所有触发器的列。视图结构与 ALL_TRIGGER_COLS 相同
DBA_TRIGGERS数据库中所有的触发器。视图结构与 ALL_TRIGGERS 相同
DBA_TYPES描述当前数据库所有的对象类型。视图结构与 ALL_TYPES 相同
DBA_USERS数据库中所有用户的信息
DBA_VIEWS当前用户的所有视图的信息。视图结构与 ALL_VIEWS 的区别只是没有OWNER列
USER_ALL_TABLES描述当前用户拥有的对象表和关系表。视图结构与 ALL_ALL_TABLES相同
USER_ARGUMENTS描述当前用户拥有的过程和函数的参数。视图结构与 ALL_ARGUMENTS的区别只是没有OWNER列
USER_COL_COMMENTS在当前用户拥有的表和视图的列上注释。视图结构与 ALL_COL_COMMENTS的区别只是没有OWNER列
USER_COL_PRIVS当前用户下的列级权限表。与 ALL_COL_PRIVS 视图结构相同
USER_CONS_COLUMNS描述当前用户拥有并在约束中指定的列。视图结构与 ALL_CONS_COLUMNS相同
USER_CONSTRAINTS描述当前用户所拥有的表的所有约束定义。视图结构与 ALL_CONSTRAINTS相同
USER_DB_LINKS当前用户拥有的dblink信息。视图结构与 ALL_DB_LINKS 相同
USER_DIRECTORIES当前用户可访问的数据库目录信息。视图结构与 ALL_DIRECTORIES相同
USER_FREE_SPACE描述当前用户可访问的表空间中的自由扩展区。其列与 DBA_FREE_SPACE中的列相同
USER_IND_COLUMNS数据库中所有建有索引的列的信息。视图结构与 ALL_IND_COLUMNS相同
USER_INDEXES当前用户拥有的所有索引信息。视图结构与 ALL_INDEXES 相同
USER_OBJECTS当前用户的所有对象的信息
USER_PART_TABLES显示当前用户所拥有的所有分区表,除了不显示owner字段,其他字段与ALL_PART_TABLES相同
USER_ROLE_PRIVS描述授予当前用户的角色
USER_SCHEDULER_EXCEPTION记录用户拥有的处于异常状态的schedule作业信息。视图结构与 DBA_SCHEDULER_EXCEPTION 相同
USER_SCHEDULER_JOB_LOG记录用户拥有的schedule中作业的日志信息。视图结构与 DBA_SCHEDULER_JOB_LOG相同
USER_SCHEDULER_JOB_RUN_DETAILS记录用户拥有的schedule中作业的详细日志信息。视图结构与 DBA_SCHEDULER_JOB_RUN_DETAILS 相同
USER_SCHEDULER_JOBS记录用户拥有的schedule的作业的信息。视图结构与 DBA_SCHEDULER_JOBS相同
USER_SCHEDULER_PROGRAMS记录用户拥有的scheduler存储过程的信息。视图结构与 DBA_SCHEDULER_PROGRAMS 相同
USER_SCHEDULER_SCHEDULES记录用户拥有的scheduler计划的信息。视图结构与 DBA_SCHEDULER_SCHEDULES 相同
USER_SEQUENCES当前用户的所有序列的信息。视图结构与 ALL_SEQUENCES 相同
USER_SOURCE当前用户的所有程序源的信息。视图结构比 ALL_SOURCE少一个OWNER列
USER_SYNONYMS数据库中用户所有同义词的信息。视图结构与 ALL_SYNONYMS相同
USER_TAB_COLS描述了当前用户可以访问的表,视图的列。视图结构与 DBA_TAB_COLS的区别只是没有OWNER列
USER_TAB_COLUMNS数据库中所有表列的信息。视图结构与 DBA_TAB_COLUMNS 的区别只是没有OWNER列
USER_TAB_COMMENTS当前用户拥有的表和视图上的注释。视图结构与 ALL_TAB_COMMENTS的区别只是没有OWNER列
USER_TAB_PARTITIONS显示当前用户所拥有及能访问到的所有分区,除了无table_owner字段,其他字段与ALL_TAB_PARTITIONS 相同
USER_TAB_PRIVS描述当前用户的对象权限,该用户可以是对象的所有者、授予者或者被授予者。视图结构与DBA_TAB_PRIVS相同
USER_TABLES当前用户的所有表的信息。与 ALL_TABLES的视图结构的区别只是没有OWNER列
USER_TABLESPACE描述当前用户可访问的表空间。其列(除外PLUGGED_IN)与 DBA_TABLESPACE相同
USER_TABLESPACES描述当前用户可访问的表空间。其列(除外PLUGGED_IN)与 DBA_TABLESPACES相同
USER_TRIGGER_COLS当前用户用的所有触发器的列信息。视图结构与 ALL_TRIGGER_COLS相同
USER_TRIGGERS当前用户的所有触发器的信息。视图结构与 ALL_TRIGGERS的区别只是没有OWNER列
USER_TYPES描述当前用户可访问的对象类型。视图结构与 ALL_TYPES的区别只是没有OWNER列
USER_USERS描述当前用户可见的数据库的所有用户信息
USER_VIEWS当前用户的所有视图的信息。视图结构与 ALL_VIEWS 相同
RECYCLEBIN描述当前库下处于回收站中的对象信息和被删除的时间

兼容Oracle的静态数据字典视图的详细信息,请参见 兼容Oracle静态数据字典视图 章节。

(二)动态性能视图

KingbaseES 数据库兼容 Oracle 数据库的动态性能视图列表如下:

视图名用途
V$CONTEXT描述当前会话中context的属性值
V$DATABASE描述当前数据库信息
V$INSTANCE描述当前实例信息
V$LOCK列出了数据库当前持有的锁以及对锁的未完成请求
V$LOCKED_OBJECT描述当前被锁定的对象
V$SESSION描述当前会话信息
V$SYSSTAT描述当前系统统计信息
V$METRICGROUPTPS、QPS视图度量分组说明
V$METRICNAMETPS、QPS视图度量名称说明
V$METRICTPS、QPS视图度量值说明
V$METRIC_HISTORYTPS、QPS视图度量值历史明细说明
V$SYSMETRICTPS、QPS视图系统度量值说明
V$SYSMETRIC_HISTORYTPS、QPS视图系统度量值明细说明
V$SYSMETRIC_SUMMARYTPS、QPS视图系统度量值摘要说明

五、总结

综上,本文围绕中电科金仓的 KingbaseES 数据库展开全面解析,先介绍了电科金仓的行业地位与技术实力 —— 作为成立超 20 年的国产数据库 “国家队”,其核心产品 KingbaseES(KES)不仅实现 100% 核心源代码自主,还多次斩获国家科技奖项、通过安全可靠测评,为产品性能与安全性奠定坚实基础。

核心内容聚焦 KingbaseES(Oracle 模式)的 Oracle 兼容性:基础层面,100% 覆盖 Oracle 常用能力,兼容 SQL 与 PL/SQL 语法、全部 Oracle 数据类型、大部分内置函数(部分存在细微差异)及部分静态数据字典视图与动态性能视图;高级层面,支持 ROWID、BFILE 等特殊类型,可实现 DBLink 同异构访问、物化视图等功能,同时兼容客户端编程接口及 Oracle XML/JSON 处理能力,还具备对等 GIS 空间数据处理能力。文中更以某大型商业银行核心信贷系统迁移为例,直观印证其 “应用无感平滑迁移” 优势 —— 因兼容 Oracle 特有 PL/SQL 包与语法,仅需微调参数便完成迁移,且全程未中断前端业务,最终还提升系统响应速度。

全文结构清晰、细节详实,既展现了 KingbaseES 的技术兼容性与实用价值,也为开发者、技术决策者了解该数据库提供了从基础特性到实际应用的完整参考,是一份兼具技术深度与实践意义的指南。