
# 静态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 | 支持。        | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 6  | INSERT ALL | 支持，有差异。    | - Oracle不支持对into_clause的表设置别名，GaussDB支持。  - into_clause指定sequence： - Oracle：首次引用nextval会生成下一个数字，但所有非首次引用的nextval都将返回相同数字。  - GaussDB：引用nextval生成的数字可以正常自增。    - Oracle设置plan_hint语句可以正常生效，GaussDB不生效。   |
   
表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        | 支持，有差异。    | GaussDB在commit\\rollback之后不刷新隐式游标结果，Oracle会在commit\\rollback之后刷新隐式游标结果。 |
| 3  | SQL%ROWCOUNT        | 支持，有差异。    | GaussDB在commit\\rollback之后不刷新隐式游标结果，Oracle会在commit\\rollback之后刷新隐式游标结果。 |
| 4  | SQL%ISOPEN          | 支持，有差异。    | GaussDB在commit\\rollback之后不刷新隐式游标结果，Oracle会在commit\\rollback之后刷新隐式游标结果。 |
| 5  | SQL%BULK_ROWCOUNT   | 不支持。       | GaussDB在commit\\rollback之后不刷新隐式游标结果，Oracle会在commit\\rollback之后刷新隐式游标结果。 |
| 6  | SQL%BULK_EXCEPTIONS | 支持，有差异。    | GaussDB在commit\\rollback之后不刷新隐式游标结果，Oracle会在commit\\rollback之后刷新隐式游标结果。 |
   
表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                                                                                                                                | 支持，有差异。    | GaussDB在exception内部会自动关闭，Oracle在exception内部不会自动关闭。 |
| 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   | 支持         |
   
