TDSQL PostgreSQL版 Oracle 兼容特性

TDSQL PG 数据库在 Oracle 兼容方面的特性。TDSQL PG 数据库基本兼容了 Oracle 的数据类型、SQL 功能、数据库对象(如:同义词、包)。在 PL(过程化语言)方面也做了很多细致兼容工作,用户应用迁移基本不需要改动业务代码。

相关产品
TDSQL PostgreSQL版 产品页,含版本规格、价格与购买入口。

TDSQL PG 对如下功能做了兼容:

·数据类型

·内建函数

·SQL 语法

·PL/SQL

·系统视图

·系统包

·数据库对象管理

·Oracle 配置参数

一、使用 Oracle 兼容模式

TDSQL PG 内核引擎会根据数据库类型来区分 Oracle 兼容模式与 PG 模式。

在创建数据库的时候使用sql modedb_mode 关键字即可创建一个指定模式的数据库,db_mode 可选 oracle 或 postgresql。不指定即默认 PostgreSQL 模式。

示例:

tdsql=# create database ora sql mode oracle;CREATE DATABASEtdsql=# \\l List of databases Name | Owner | Encoding | Sqlmode | Collate | Ctype | Access privileges —————+——-+———-+———-+————+————+——————- ora | tbase | UTF8 | oracle | zh_CN.utf8 | zh_CN.utf8 | postgres | tbase | UTF8 | postgres | zh_CN.utf8 | zh_CN.utf8 | tbase_db | tbase | UTF8 | postgres | zh_CN.utf8 | zh_CN.utf8 | tdsql | tbase | UTF8 | postgres | zh_CN.utf8 | zh_CN.utf8 | template0 | tbase | UTF8 | postgres | zh_CN.utf8 | zh_CN.utf8 | =c/tbase + | | | | | | tbase=CTc/tbase template0_ora | tbase | UTF8 | oracle | zh_CN.utf8 | zh_CN.utf8 | =c/tbase + | | | | | | tbase=CTc/tbase template1 | tbase | UTF8 | postgres | zh_CN.utf8 | zh_CN.utf8 | =c/tbase + | | | | | | tbase=CTc/tbase template1_ora | tbase | UTF8 | oracle | zh_CN.utf8 | zh_CN.utf8 | =c/tbase + | | | | | | tbase=CTc/tbase user1 | user1 | UTF8 | postgres | zh_CN.utf8 | zh_CN.utf8 | (9 rows)

可以看到 ora 数据库的 Sqlmode 列显示 oracle,即表示 ora 数据库当前为 Oracle 模式。

而 tdsql 数据库的 Sqlmode 列显示 postgres,即表示 tdsql 数据库当前为 PostgreSQL 模式。

二、SQL 数据类型

TDSQL PG 兼容了 Oracle 所有常用数据类型。详情参见 SQL 数据类型。

三、内建函数

TDSQL PG 兼容了大部分 Oracle 内建函数。详情参见 内建函数。

四、SQL 语法

TDSQL PG 支持语法说明:

序号 Oracle 数据库 TDSQL PG 数据库 说明
1 SELECT 支持 支持单表和多表连接;支持多种 JOIN 连接方式(内连接、外连接);支持子查询;支持层次查询;支持多种窗口函数等。支持多种集合操作:UNION、UNION ALL、INTERSECT、EXCEPT、MINUS 等。支持 EXPLAIN 打印计划。支持 PIVOT、UNPIVOT
2 INSERT 支持 支持VALUES插入一行或者多行;支持分区表插入;支持INSERT … SELECT插入数据支持同时插入多个目标表(INSERT ALL/FIRST)
3 UPDATE 支持 SET 支持一次更新多列数据
4 DELETE 支持 支持删除表数据
5 TRUNCATE 支持 支持清空表数据
6 并行查询 支持 支持并行 INSERT 和 UPDATE
7 Hint 支持 支持 Hint

五、PL/SQL

TDSQL PG 支持 PLSQL 语法说明:

序号 Oracle 数据库 TDSQL PG 数据库 说明
1 数据类型 支持 支持 sql 类型数据类型支持集合和记录类型支持 object 类型支持 oracle 兼容的 pls_integer 和 binary_integer
2 流程控制 支持 支持循环控制逻辑支持条件控制逻辑支持顺序执行逻辑
3 集合类型与记录类型 支持 支持嵌套表支持关联数组支持可变数组支持记录类型
4 静态 SQL 支持 支持静态 SQL
5 动态 SQL 支持 支持动态 SQL
6 子过程 支持 支持包内子过程支持 OBJECT 类型子过程支持创建 FUNCTION 和P ROCEDURE
7 触发器 支持 支持 insert/update/delete/truncate4种类型 DML 触发器支持 alter/drop/create 且出发目标是 database/schema 的 ddl 触发器支持 befor/after/instead of 三种触发时机的触发器
8 异常处理 支持 PL/SQL 中支持异常块,可以便捷地检查和处理错误
9 PACKAGE 对象 支持 支持定义包对象,用来封装一组成员变量和成员函数
10 自定义类型 支持 支持使用 CREATE TYPE 创建自定义类型
11 游标 支持 支持隐式游标支持显式游标支持自定义游标类型支持 SYS_REFCURSOR
12 函数嵌套声明 支持 支持在函数/存储过程/匿名块中嵌套定义函数或者存储过程
13 PL 系统包 支持 包括 DBMS_OUTPUT、DBMS_LOB、DBMS_ASSERT、DBMS_ALERT、DBMS_LOCK、DBMS_METADATA、DBMS_RANDOM、DBMS_SESSION 等

六、系统视图

支持多个 Oracle 系统视图。请参见 系统视图。

七、系统包

支持多个 Oracle 系统包。请参见 系统包。

八、数据库对象管理

序号 数据库对象 TDSQL PG 数据库 说明
1 表 支持 支持创建表,包括临时表和全局临时表。创建表可以指定约束、索引等信息。支持修改表定义。通过 ALTER TABLE 来添加列,修改列类型,增加或者删除默认值、约束等。支持删除表定义。
2 约束 支持 支持 CHECK、UNIQUE、NOT NULL 约束。支持 PRIMARY KEY 约束。支持 FOREIGN KEY 约束。支持 ALTER TABLE 对约束进行启用、禁用。
3 分区表 支持 支持 TDSQL PG 语法创建一级和多级分区;不支持用 Oracle 语法方式创建分区表支持 RANGE、LIST、HASH 分区支持分区表的局部索引支持分区表的基本维护:分区表添加分区表删除分区表分裂、合并
4 索引 支持 支持 BTREE、HASH、BRIN 索引。支持 gist、gin、spgist 索引。支持索引的创建和删除
5 视图 支持 支持创建和删除视图支持 FORCE VIEW支持简单视图的 DML 操作。不支持多表视图的 DML
6 序列 支持 支持序列的创建和删除支持 NOCACHE、NOORDER 序列
7 同义词 支持 支持同义词的创建和删除支持对表、视图、同义词等对象创建同义词
8 DBLINK 支持 TDSQL PG 支持创建、删除 DBLINK支持用 DBLINK 读和写 Oracle 数据库
赞 (0)
上一篇 4天前
下一篇 4天前