orafce
- Oracle 的兼容性函数和包。
提供了与 Oracle 数据库兼容的特性。 这些特性使您能够轻松迁移到 LightDB 并减少重新配置应用程序的成本。 下表列出了与 Oracle 数据库兼容的特性。
Table E.54. 数据类型
项目 |
概述 |
---|---|
VARCHAR2 |
可变长度字符数据类型 |
NVARCHAR2 |
可变长度国家字符数据类型 |
DATE |
存储日期和时间的数据类型 |
NUMBER |
NUMBER 是 NUMERIC 的别名 |
CLOB |
存储单字节和多字节字符数据,并且和 `text` 数据类型有基本一致的功能 |
BLOB |
存储无结构的二进制大对象,并且和 `bytea` 数据类型有基本一致的功能 |
RAW |
可变长度十六进制数据类型。 |
PLS_INTEGER |
用于存储有符号整数的 PL/SQL 数据类型。 |
BINARY_INTEGER |
用于存储有符号整数的数据类型。它是INT4的别名。 |
BINARY_FLOAT |
32位浮点数。这种数据类型需要4个字节。 |
BINARY_DOUBLE |
64位浮点数。这种数据类型需要8个字节。 |
XMLType |
可变长度xml数据类型。 |
LONG |
存储单字节和多字节字符数据,并且和 `CLOB` 数据类型有一致的功能 |
在 varchar
和 char
之间,varchar2
和 nvarchar2
的优先级配置,
创建 orafce 扩展后,优先级如下:
numeric > double precision > real > bigint > integer > smallint > text > varchar > varchar2 > nvarchar2 > char
Table E.55. SQL 查询
项目 |
概述 |
---|---|
DUAL 表 |
系统提供的表 |
Table E.56. 数学函数
项目 |
概述 |
并行属性 |
---|---|---|
BIN_TO_NUM |
将位向量转换为相应的数字 |
安全 |
BITAND |
执行按位 AND 操作 |
安全 |
BITOR |
执行按位 OR 操作 |
安全 |
BITXOR |
执行按位 XOR 操作 |
安全 |
COSH |
计算一个数的双曲余弦值 |
安全 |
MOD |
MOD函数返回参数1除以参数2的余数(模) |
安全 |
REMAINDER |
返回 n2 除以 n1 的余数 |
安全 |
ROUND_TIES_TO_EVEN |
将 n 四舍五入到整数位 |
安全 |
SINH |
计算一个数的双曲正弦值 |
安全 |
TANH |
计算一个数的双曲正切值 |
安全 |
CEIL |
计算大于等于一个数的最小整数,当输入参数是interval类型时,会先获取其天数并将其转成数值后再计算 |
安全 |
Table E.57. 字符串函数
项目 |
概述 |
并行属性 |
---|---|---|
INSTR |
返回字符串中一个子字符串的位置 |
安全 |
INSTRB |
返回字符串中第一个字节为指定子字符串的位置。 |
安全 |
LENGTH |
返回字符串的字符数长度 |
安全 |
LENGTHB |
返回字符串的字节数长度 |
安全 |
LPAD |
在字符串左侧填充指定长度的字符序列 |
安全 |
LTRIM |
从字符串的开头删除指定的字符 |
安全 |
NLSSORT |
返回用于根据语言环境对字符串进行语言排序的字节字符串 |
安全 |
REGEXP_COUNT |
搜索字符串中的正则表达式,并返回匹配项的计数 |
安全 |
REGEXP_INSTR |
返回字符串中匹配模式的起始或结束位置。 |
安全 |
REGEXP_LIKE |
在查询的WHERE子句中使用,使查询返回与给定模式匹配的行。 |
安全 |
REGEXP_SUBSTR |
返回与函数调用中指定的模式匹配的字符串。 |
安全 |
REGEXP_REPLACE |
返回与函数调用中指定的模式匹配的字符串。 |
安全 |
REPLACE |
将string中每个search_string替换为replacement_string并返回结果字符串。 |
安全 |
RPAD |
用指定的字符序列将字符串右侧填充到指定长度。 |
安全 |
RTRIM |
从字符串末尾删除指定的字符。 |
安全 |
SOUNDEX |
返回一个包含char的语音表示的字符字符串。 |
安全 |
SUBSTR |
使用字符指定位置和长度,提取字符串的一部分。 |
安全 |
SUBSTRB |
使用字节指定位置和长度,提取字符串的一部分。 |
安全 |
GUID |
返回UUID。 |
安全 |
CONCAT |
连接两个字符串 |
安全 |
UPPER |
大写所有字母 |
Safe |
Table E.58. Date/Time Functions
项目 |
概述 |
并行属性 |
---|---|---|
ADD_MONTHS |
给定日期加上指定的月份。 |
安全 |
DBTIMEZONE |
返回数据库时区的值。 |
安全 |
LENGTHB |
返回一个字符串的字节数。 |
安全 |
LAST_DAY |
返回指定日期所在月份的最后一天。 |
安全 |
LTRIM |
从字符串的开头删除指定的字符。 |
安全 |
MONTHS_BETWEEN |
返回两个日期之间的月份数。 |
安全 |
NEXT_DAY |
返回指定日期之后第一个特定星期几的日期。 |
安全 |
ROUND |
四舍五入一个日期。 |
安全 |
SESSIONTIMEZONE |
返回会话的时区。 |
安全 |
SYSDATE |
返回系统日期。 |
安全 |
TRUNC |
截断一个日期。 |
安全 |
TZ_OFFSET |
返回时区偏移量。 |
安全 |
Table E.59. 数据类型格式化函数
项目 |
概述 |
并行安全 |
---|---|---|
CONVERT |
将一个字符集的字符字符串转换为另一个字符集。 |
安全 |
NUMTOYMINTERVAL |
将数字转换为一个 INTERVAL YEAR TO MONTH 字面量。 |
安全 |
TO_BLOB(raw) |
将 RAW 值转换为 BLOB 值。 |
安全 |
TO_CHAR |
将一个值转换为一个字符串。 |
安全 |
TO_DATE |
将字符串按照指定的格式转换为日期。 |
安全 |
TO_MULTI_BYTE |
将单字节字符串转换为多字节字符串。 |
安全 |
TO_NUMBER |
将一个值按照指定的格式转换为一个数字。 |
安全 |
TO_SINGLE_BYTE |
将多字节字符串转换为单字节字符串。 |
安全 |
TO_CLOB |
将字符字符串或数值转换为CLOB值。 |
Table E.60. 条件表达式
项目 |
概述 |
并行属性 |
---|---|---|
DECODE |
比较值,如果相等,则返回相应的值。 |
安全 |
LNNVL |
判断一个值是否为 false 或未知。 |
安全 |
NANVL |
当值为非数字(NaN)时,返回替代值。 |
安全 |
NVL |
当值为NULL时,返回替代值。 |
安全 |
NVL2 |
根据值是否为NULL,返回替代值。 |
安全 |
Table E.61. 聚合函数
项目 |
概述 |
并行属性 |
---|---|---|
ANY_VALUE |
返回expr的一个单一的非确定性值。 |
不安全 |
BIT_AND_AGG |
返回按位 AND 操作的结果。 |
不安全 |
BIT_OR_AGG |
返回按位 OR 操作的结果。 |
不安全 |
BIT_XOR_AGG |
返回按位 XOR 操作的结果。 |
不安全 |
KURTOSIS_POP |
用于确定给定分布中的异常值特征。 |
不安全 |
KURTOSIS_SAMP |
用于确定给定分布中的异常值特征。 |
不安全 |
LISTAGG |
返回连接的、以分隔符分隔的字符串值列表。 |
不安全 |
MEDIAN |
计算一组值的中位数。 |
不安全 |
SKEWNESS_POP |
用于确定给定分布的对称性。 |
不安全 |
SKEWNESS_SAMP |
用于确定给定分布的对称性。 |
不安全 |
WY_CONCAT |
返回连接的、以逗号分隔的字符串值列表。 |
不安全 |
Table E.62. 返回内部信息的函数
项目 |
概述 |
并行属性 |
---|---|---|
DUMP |
返回一个值的内部信息。 |
安全 |
NLS_CHARSET_ID |
返回与字符集名称字符串对应的字符集ID编号。 |
安全 |
NLS_CHARSET_NAME |
返回与ID编号对应的字符集名称。 |
安全 |
SYS_CONTEXT |
返回当前时刻与上下文命名空间相关联的参数值。 |
安全 |
USERENV |
返回当前会话中与上下文“USERENV”相关联的参数值。 |
安全 |
Table E.63. SQL运算符
项目 |
概述 |
---|---|
日期时间运算符 |
用于 DATE 类型的日期时间运算符。 |
Table E.64. 其他函数
项目 |
概述 |
并行属性 |
---|---|---|
EMPTY_CLOB |
返回一个空的 CLOB |
安全 |
EMPTY_BLOB |
返回一个空的 BLOB |
安全 |
ORA_HASH |
ORA_HASH 是一个计算给定表达式的哈希值的函数。 |
安全 |
VSIZE |
返回表达式的内部表示中的字节数。 |
安全 |
DEPS_SAVE_AND_DROP_DEPENDENCIES |
保存并删除表的依赖项。 |
不安全 |
DEPS_RESTORE_DEPENDENCIES |
恢复表的依赖项。 |
不安全 |
PLVSTR.IS_PREFIX |
如果 |
安全 |
PLVDATE.ISLEAPYEAR |
判断某个年份是否是闰年。 | |
TIMESTAMP_TO_SCN |
返回给定时间戳对应的事务 ID |
安全 |
Table E.65. 包
项目 |
概述 |
---|---|
DBMS_ALERT |
向多个会话发送警报。 |
DBMS_ASSERT |
验证输入值的属性。 |
DBMS_DATAPUMP |
提供一组函数存储过程来管理数据泵作业、导出和导入数据、查询作业状态等操作。 |
DBMS_LOB |
与 DBMS_LOB 包兼容的一些函数。 |
DBMS_OUTPUT |
向客户端发送消息。 |
DBMS_PIPE |
为会话间通信创建一个管道。 |
DBMS_RANDOM |
生成随机数。 |
DBMS_UTILITY |
提供各种实用工具。 |
DBMS_JOB |
在 lt_cron 中安排和管理作业。 |
DBMS_LOCK |
提供与锁管理服务交互的接口。 |
DBMS_METADATA |
提供了一种从数据库字典中检索元数据的方法。 |
DBMS_OBFUSCATION_TOOLKIT |
允许应用程序使用数据加密标准(DES)或三重DES算法加密数据。 |
DBMS_SNAPSHOT |
允许您刷新快照(MVIEW)。 |
DBMS_SQL |
在存储过程或匿名块中提供了一种执行动态sql的方法。 |
DBMS_STATS |
允许您收集优化器统计信息。 |
UTL_FILE |
允许进行文本文件操作。 |
UTL_RAW |
提供操作 RAW 数据类型的 SQL 函数。 |
UTL_URL |
包含两个函数,提供 URL 字符的转义和反转义机制。 |
UTL_ENCODE |
提供将 RAW 数据编码为标准编码格式的函数。 |
Table E.66. 系统视图
项 |
概述 |
---|---|
DBA_SEQUENCES ALL_SEQUENCES USER_SEQUENCES |
描述序列。 |
DBA_SYNONYMS ALL_SYNONYMS USER_SYNONYMS |
描述同义词,当前为空。 |
DBA_TAB_COLS ALL_TAB_COLS USER_TAB_COLS COLS DBA_TAB_COLUMNS ALL_TAB_COLUMNS USER_TAB_COLUMNS |
描述表和视图的列。 |
DBA_TAB_COL_STATISTICS ALL_TAB_COL_STATISTICS USER_TAB_COL_STATISTICS |
包含从 "[DBA/ALL/USER]_TAB_COLUMNS" 提取的列统计信息和直方图信息。 |
DBA_OBJECTS ALL_OBJECTS USER_OBJECTS OBJ |
描述对象。 |
DBA_CATALOG ALL_CATALOG USER_CATALOG |
列出表、视图和序列。 |
DICTIONARY DICT |
包含数据字典表和视图的描述信息。 |
DBA_DEPENDENCIES ALL_DEPENDENCIES USER_DEPENDENCIES |
描述对象之间的依赖关系。 |
DBA_SOURCE ALL_SOURCE USER_SOURCE |
描述存储对象的文本源代码。 |
DBA_PROCEDURES ALL_PROCEDURES USER_PROCEDURES |
列出函数和存储过程。 |
DBA_TRIGGERS ALL_TRIGGERS USER_TRIGGERS |
描述触发器。 |
DBA_TRIGGER_COLS ALL_TRIGGER_COLS USER_TRIGGER_COLS |
描述触发器中列的使用情况。 |
DBA_TYPES ALL_TYPES USER_TYPES |
描述对象类型。 |
DBA_CONSTRAINTS ALL_CONSTRAINTS USER_CONSTRAINTS |
描述约束定义。 |
DBA_CONS_COLUMNS ALL_CONS_COLUMNS USER_CONS_COLUMNS |
描述在约束中指定的列。 |
DBA_VIEWS ALL_VIEWS USER_VIEWS |
描述视图。 |
DBA_TABLES ALL_TABLES USER_TABLES TABS DBA_ALL_TABLES ALL_ALL_TABLES USER_ALL_TABLES TAB |
描述对象表和关系表 |
DBA_TAB_STATISTICS ALL_TAB_STATISTICS USER_TAB_STATISTICS |
显示表的优化器统计信息 |
DBA_TAB_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS |
显示表和视图的注释 |
DBA_COL_COMMENTS ALL_COL_COMMENTS USER_COL_COMMENTS |
显示表和视图的列的注释 |
DBA_TAB_MODIFICATIONS ALL_TAB_MODIFICATIONS USER_TAB_MODIFICATIONS |
描述所有表的修改情况 |
DBA_INDEXES ALL_INDEXES USER_INDEXES IND |
描述索引 |
DBA_INDEX_USAGE ALL_INDEX_USAGE USER_INDEX_USAGE |
显示每个索引的累计统计信息。 |
DBA_IND_COLUMNS ALL_IND_COLUMNS USER_IND_COLUMNS |
描述表上索引的列 |
DBA_IND_EXPRESSIONS ALL_IND_EXPRESSIONS USER_IND_EXPRESSIONS |
描述基于函数的索引的表达式 |
DBA_IND_STATISTICS ALL_IND_STATISTICS USER_IND_STATISTICS |
显示索引的优化器统计信息 |
DBA_USERS ALL_USERS USER_USERS |
描述用户 |
DBA_ROLES |
描述数据库中的所有角色 |
DBA_ROLE_PRIVS USER_ROLE_PRIVS |
描述赋予用户和角色的角色 |
PRODUCT_COMPONENT_VERSION |
包含组件产品的版本和状态信息 |
PLAN_TABLE |
PLAN_TABLE 会自动创建为全局临时表,用于保存所有用户的 EXPLAIN PLAN 语句的输出,目前为空 |
DBA_DATA_FILES |
描述数据库文件 |
DBA_JOBS ALL_JOBS USER_JOBS |
描述作业 |
DBA_JOBS_RUNNING |
列出实例中当前正在运行的所有作业 |
DBA_TABLESPACES USER_TABLESPACES |
描述表空间 |
NLS_DATABASE_PARAMETERS NLS_INSTANCE_PARAMETERS NLS_SESSION_PARAMETERS |
列出 NLS 参数 |
DBA_SEGMENTS USER_SEGMENTS |
描述分配给段的存储空间 |
DBA_PART_TABLES ALL_PART_TABLES USER_PART_TABLES |
显示分区表的对象级分区信息 |
DBA_TAB_PARTITIONS ALL_TAB_PARTITIONS USER_TAB_PARTITIONS |
显示表分区级别的分区信息、分区存储参数和分区统计信息 |
DBA_TAB_SUBPARTITIONS ALL_TAB_SUBPARTITIONS USER_TAB_SUBPARTITIONS |
显示所有子分区的信息 |
DBA_PART_KEY_COLUMNS ALL_PART_KEY_COLUMNS USER_PART_KEY_COLUMNS |
描述分区对象的分区键列 |
DBA_SUBPART_KEY_COLUMNS ALL_SUBPART_KEY_COLUMNS USER_SUBPART_KEY_COLUMNS |
显示复合分区表(和复合分区表上的本地索引)的子分区键列 |
DBA_IND_PARTITIONS ALL_IND_PARTITIONS USER_IND_PARTITIONS |
描述索引分区 |
DBA_PART_INDEXES ALL_PART_INDEXES USER_PART_INDEXES |
显示分区索引的对象级别分区信息 |
COL |
描述表,视图的字段信息 |
以DBA开头的视图显示数据库中的某些内容。 以ALL开头的视图目前与以DBA开头的视图相同,不像Oracle那样进行权限验证。 以USER开头的视图显示当前用户拥有的某些内容(实际上是当前模式,在Oracle中,用户和模式是一一对应的)。
numeric和boolean类型的隐式转换
Orafce支持numeric和boolean类型的双向隐式转换。
Example
CREATE TABLE test(v1 BOOLEAN, v2 NUMERIC); -- numeric implicit cast to boolean -- boolean implicit cast to numeric INSERT INTO test(v1, v2) VALUES(1.1, true); SELECT * FROM test WHERE v2 = true;
orafce被定义为在创建数据库集群时默认创建的"public"模式中的用户定义函数,因此它们可以对所有用户可用,无需特殊设置。 由于这个原因,请确保在search_path参数中指定的模式搜索路径列表中包含"public"(不带双引号)。
以下由orafce提供的功能是使用不同的外部规范在LightDB和orafce中实现的。在LightDB的默认配置中,LightDB的标准功能优先。
Table E.67. 数据类型
项目 |
LightDB的标准功能 |
orafce添加的兼容性功能 |
---|---|---|
DATE |
仅存储日期。 |
存储日期和时间。 |
Table E.68. 函数
项目 |
LightDB的标准功能 |
orafce添加的兼容性功能 |
---|---|---|
LENGTH |
如果字符串是CHAR类型,则不包括尾随空格长度。 |
如果字符串是CHAR类型,则包括尾随空格长度。 |
SUBSTR |
如果为开始位置指定了0或负值,则将开始位置减1,位置将向左移动,从那里开始提取。 |
- 如果为开始位置指定0,则从字符串的开头开始提取。 - 如果为开始位置指定负值,则从字符串末尾计算的位置开始提取。 |
LPAD RPAD |
- 如果字符串是CHAR类型,则删除尾随空格,然后填充值。 - 结果长度被视为字符数。 |
- 如果字符串是CHAR类型,则在不删除尾随空格的情况下填充值。 - 结果长度基于显示字符串的宽度。 因此,全角字符使用宽度2处理,半角字符使用宽度1处理。 |
LTRIM RTRIM BTRIM (*1) |
如果字符串是CHAR类型,则删除尾随空格,然后删除值。 |
如果字符串是CHAR类型,则在不删除尾随空格的情况下删除值。 |
TO_DATE |
返回值的数据类型为DATE。 |
返回值的数据类型为TIMESTAMP。 |
*1:对于Oracle数据库,不存在BTRIM函数,但是orafce实现了与TRIM函数相同的外部规范,以对齐其行为。
此外,在LightDB的默认配置中无法使用以下功能。
Table E.69. 函数
功能 |
---|
SYSDATE |
DBTIMEZONE |
SESSIONTIMEZONE |
TO_CHAR (日期/时间值) |
Table E.70. 运算符
功能 |
---|
日期时间运算符 |
要使用这些功能,请在lightdb.conf的“search_path”参数中设置“oracle”和“pg_catalog”。 在这种情况下,您必须在“pg_catalog”之前指定“oracle”。
search_path = '"$user", public, oracle, pg_catalog'
信息
search_path参数指定搜索模式的顺序。 与Oracle数据库兼容的每个功能都在oracle模式中定义。
建议在lightdb.conf中设置search_path。在这种情况下,它将对每个实例有效。
search_path的配置可以在用户级别或数据库级别完成。以下是设置示例。
如果LightDB的标准功能具有优先级,并且不需要使用默认配置无法使用的功能,则无需更改search_path的设置。
用户级别的设置示例。可以通过执行SQL命令来设置。 在这个例子中,user1被用作用户名。
ALTER USER user1 SET search_path = "$user",public,oracle,pg_catalog;
在数据库级别进行设置的示例。可以通过执行SQL命令来设置。 在这个例子中,db1被用作数据库名称。您必须在“pg_catalog”之前指定“oracle”。
ALTER DATABASE db1 SET search_path = "$user",public,oracle,pg_catalog;
参见
有关search_path的信息,请参考LightDB文档中的“服务器管理” > “客户端连接默认值” > “语句行为”。
有关ALTER USER和ALTER DATABASE的信息,请参考LightDB文档中的“参考” > “SQL命令”。