更新时间:2024-05-14 GMT+08:00
分享

静态SQL

表1 静态查询 SQL语句

序号

Oracle数据库

GaussDB数据库

差异

1

SELECT

支持,有差异。

GaussDB和Oracle在某些场景下有不同。

GaussDB中不同事务中的共享锁在如下场景中不会互相阻塞:

SELECT FOR SHARE - SELECT FOR SHARE;

SELECT FOR SHARE - SELECT FOR KEY SHARE;

SELECT FOR KEY SHARE - SELECT FOR KEY SHARE;

SELECT FOR KEY SHARE - SELECT FOR NO KEY UPDATE;

上述场景中,由于锁与锁之间未阻塞,对在其他事务中存在非阻塞锁的数据指定SKIP LOCKED时,锁不会被跳过。

表2 静态DML SQL语句

序号

Oracle数据库

GaussDB数据库

1

INSERT

支持

2

UPDATE

支持

3

DELETE

支持

4

MERGE

支持

5

LOCK TABLE

支持

表3 静态TCL SQL语句

序号

Oracle数据库

GaussDB数据库

差异

1

COMMIT

支持。

-

2

ROLLBACK

支持。

-

3

SAVEPOINT

支持。

-

4

SET TRANSACTION

支持,有差异。

GaussDB不支持NAME string语法、USE ROLLBACK SEGMENT rollback_segment语法。

表4 伪列

序号

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场景下与其他数据库行为不一致,直接进行业务迁移存在风险。

表5 隐式游标属性

序号

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

支持,有差异。

表6 显式游标语法及关键字

序号

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

支持

5

FETCH

支持

6

CURRENT OF CURSOR

支持

表7 显式游标属性

序号

Oracle数据库

GaussDB数据库

1

SQL%FOUND

支持

2

SQL%NOTFOUND

支持

3

SQL%ROWCOUNT

支持

4

SQL%ISOPEN

支持

表8 游标循环

序号

Oracle数据库

GaussDB数据库

1

FOR LOOP

支持

表9 自治事务支持场景

序号

Oracle数据库

GaussDB数据库

1

存储过程

支持

2

匿名块

支持

3

函数

支持

4

Package

支持

分享:

    相关文档

    相关产品