-
Notifications
You must be signed in to change notification settings - Fork 0
不支持的Oracle特性
LightDB Enterprise Postgres edited this page Sep 29, 2022
·
21 revisions
- insert all -> insert ... values(),(),();
- alter table modify -> alter table change;
- 自治事务语法,使用嵌套存储过程
- pipeline管道函数
- pl/sql可变长度数组
- SQL内联pl/sql函数(19c新特性)
- 原生rowid,ctid模拟实现
- 不支持的优化器提示:
- alter table modify partition ->使用drop partition/add partition代替
- 22.3之前的版本,null和''语义不完全等价,22.3版本开始,null和''等价,和oracle行为一致。参见https://www.cnblogs.com/zhjh256/p/16694142.html
- LightDB 22.2及之前版本substr(str,m,n),如果n是负数,则行为和Oracle不兼容。参见https://www.csdn.net/tags/NtzaQgysMjU3MS1ibG9n.html。lightdb 22.3 oracle模式完全兼容oracle substr行为。
- 语句级异常回滚而非事务级。lightdb 22.3兼容
- commit之后可以继续fetch。lightdb 22.3兼容
- 分布式下不支持dml带rownum,可以通过with cte(select pk from t limit m,n) update t set ... where pk in (select pk from cte);变通实现。
- 不支持嵌套表和联合数组作为存储过程的入参。
- 包外引用包内的变量,不支持schema模式,如schema.包名.变量是不支持的,包括嵌套表变量和联合数组。
- 嵌套表不支持在包中通过构造器初始化。
- alter type schema1.typeC2 RENAME TO schema1.typeC3; --不支持schema.类型名的变名操作。
- 嵌套表不支持集合运算。
- TYPE ColorsNoNulls IS TABLE OF VARCHAR(20) NOT NULL; 嵌套表不支持声明 NOT NULL。
- 包中不支持定义嵌套表为伪类型。
- 不支持在匿名块中声明过程。
- 匿名块无法调用包中的游标。
- 包中联合数组,嵌套表不支持fetch bulk collect into。
- 不支持自定义异常,如rate_exception exception;
- Cursor Variables cannot be declared as part of a package。游标变量不能作为包的成员,该规则从22.2到22.3做了变更。若用户使用了,则业务代码需要变更。