静态SQL
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
SELECT |
支持,有差异 |
GaussDB和Oracle在某些场景下有不同。 GaussDB中FOR SHARE对检索出来的行加共享锁,不同事务的共享锁不会互相阻塞。若数据在一个事务中被FOR SHARE锁定,在另一个事务中使用SELECT FOR SHARE SKIP LOCKED时,SKIP LOCKED不会跳过锁。 |
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
INSERT |
支持 |
- |
2 |
UPDATE |
支持 |
- |
3 |
DELETE |
支持 |
- |
4 |
MERGE |
支持 |
- |
5 |
LOCK TABLE |
支持 |
- |
6 |
INSERT ALL |
支持,有差异 |
|
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
COMMIT |
支持 |
- |
2 |
ROLLBACK |
支持 |
- |
3 |
SAVEPOINT |
支持 |
- |
4 |
SET TRANSACTION |
支持,有差异 |
GaussDB不支持NAME string语法、USE ROLLBACK SEGMENT rollback_segment语法。 |
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
CURRVAL and NEXTVAL |
支持 |
- |
2 |
LEVEL |
不支持 |
- |
3 |
OBJECT_VALUE |
不支持 |
- |
4 |
ROWID |
不支持 |
- |
5 |
ROWNUM |
支持,有差异 |
不推荐ROWNUM条件用于JOIN ON子句。 GaussDB中ROWNUM条件用于JOIN ON子句时在LEFT JOIN、RIGHT JOIN、FULL JOIN场景下和MERGE INTO场景下与其他数据库行为不一致,直接进行业务迁移存在风险。 |
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
SQL%FOUND |
支持,有差异 |
GaussDB在commit\rollback之后不刷新隐式游标结果,Oracle会在commit\rollback之后刷新隐式游标结果。 |
2 |
SQL%NOTFOUND |
支持,有差异 |
|
3 |
SQL%ROWCOUNT |
支持,有差异 |
|
4 |
SQL%ISOPEN |
支持,有差异 |
|
5 |
SQL%BULK_ROWCOUNT |
不支持 |
|
6 |
SQL%BULK_EXCEPTIONS |
不支持 |
序号 |
Oracle数据库 |
GaussDB数据库 |
差异 |
---|---|---|---|
1 |
CURSOR cursor_name [ parameter_list ] RETURN return_type; |
支持 |
- |
2 |
CURSOR cursor_name [ parameter_list ] [ RETURN return_type ] IS select_statement; |
支持 |
- |
3 |
OPEN |
支持 |
- |
4 |
CLOSE |
支持,有差异 |
GaussDB在exception内部会自动关闭,Oracle在exception内部不会自动关闭。 |
5 |
FETCH |
支持 |
- |
6 |
CURRENT OF CURSOR |
支持 |
- |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
SQL%FOUND |
支持 |
2 |
SQL%NOTFOUND |
支持 |
3 |
SQL%ROWCOUNT |
支持 |
4 |
SQL%ISOPEN |
支持 |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
FOR LOOP |
支持 |
序号 |
Oracle数据库 |
GaussDB数据库 |
---|---|---|
1 |
存储过程 |
支持 |
2 |
匿名块 |
支持 |
3 |
函数 |
支持 |
4 |
Package |
支持 |