# 静态SQL
表1静态查询 SQL语句 
| Oracle数据库 | GaussDB数据库 | 差异                                                                                                                                                                                                 |
|:---|:---|:---|
| SELECT    | 支持，有差异     | GaussDB和Oracle在某些场景下有不同。 GaussDB中FOR SHARE对检索出来的行加共享锁，不同事务的共享锁不会互相阻塞。若数据在一个事务中被FOR SHARE锁定，在另一个事务中使用SELECT FOR SHARE SKIP LOCKED时，SKIP LOCKED不会跳过锁。 |
   
表2静态DML SQL语句 
| Oracle数据库   | GaussDB数据库 | 差异                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|
| INSERT        | 支持，有差异      | - Oracle允许目标表的列数多于子查询结果的列数，但必须显式指定要插入的列名，以确保列数匹配。  - GaussDB可以省略显式指定要插入的列名，该情况下子查询结果的第1列值插入到目标表的第1列中，以此类推，目标表多出的列会被插入NULL值（如果该列允许为NULL）或默认值（如果该列有默认值）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| UPDATE     | 支持         | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| DELETE     | 支持           | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| MERGE       | 支持          | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| LOCK TABLE | 支持         | -                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| INSERT ALL   | 支持，有差异      | - Oracle不支持对into_clause的表设置别名，GaussDB支持。  - into_clause指定sequence： - Oracle：首次引用nextval会生成下一个数字，但所有非首次引用的nextval都将返回相同数字。  - GaussDB：引用nextval生成的数字可以正常自增。    - Oracle设置plan_hint语句可以正常生效，GaussDB不生效。  - Oracle允许目标表的列数多于子查询结果的列数，但必须显式指定要插入的列名，以确保列数匹配。GaussDB可以省略显式指定要插入的列名，该情况下子查询结果的第1列值插入到目标表的第1列中，以此类推，目标表多出的列会被插入NULL值（如果该列允许为 NULL）或默认值（如果该列有默认值）。   |
   
表3静态TCL SQL语句 
| Oracle数据库     | GaussDB数据库 | 差异                                                               |
|:---|:---|:---|
| COMMIT         | 支持          | -                                                                |
| ROLLBACK         | 支持          | -                                                                 |
| SAVEPOINT      | 支持          | -                                                                |
| SET TRANSACTION | 支持，有差异     | GaussDB不支持NAME string语法、USE ROLLBACK SEGMENT rollback_segment语法。 |
   
表4伪列 
| Oracle数据库            | GaussDB数据库 | 差异                                                                                                                                                                        |
|:---|:---|:---|
| CURRVAL and NEXTVAL | 支持         | -                                                                                                                                                                         |
| LEVEL               | 不支持       | -                                                                                                                                                                        |
| OBJECT_VALUE       | 不支持      | -                                                                                                                                                                        |
| ROWID               | 支持          | -                                                                                                                                                                          |
| ROWNUM                | 支持，有差异     | 不推荐ROWNUM条件用于JOIN ON子句。 GaussDB中ROWNUM条件用于JOIN ON子句时在LEFT JOIN、RIGHT JOIN、FULL JOIN场景下和MERGE INTO场景下与其他数据库行为不一致，直接进行业务迁移存在风险。 |
   
表5隐式游标属性 
| Oracle数据库         | GaussDB数据库 | 差异                                                                      |
|:---|:---|:---|
| SQL%FOUND          | 支持，有差异      | GaussDB在commit/rollback之后不刷新隐式游标结果，Oracle会在commit/rollback之后刷新隐式游标结果。 |
| SQL%NOTFOUND      | 支持，有差异       | GaussDB在commit/rollback之后不刷新隐式游标结果，Oracle会在commit/rollback之后刷新隐式游标结果。 |
| SQL%ROWCOUNT        | 支持，有差异      | GaussDB在commit/rollback之后不刷新隐式游标结果，Oracle会在commit/rollback之后刷新隐式游标结果。 |
| SQL%ISOPEN          | 支持，有差异    | GaussDB在commit/rollback之后不刷新隐式游标结果，Oracle会在commit/rollback之后刷新隐式游标结果。 |
| SQL%BULK_ROWCOUNT    | 不支持           | GaussDB在commit/rollback之后不刷新隐式游标结果，Oracle会在commit/rollback之后刷新隐式游标结果。 |
| SQL%BULK_EXCEPTIONS | 不支持           | GaussDB在commit/rollback之后不刷新隐式游标结果，Oracle会在commit/rollback之后刷新隐式游标结果。 |
   
表6显式游标语法及关键字 
| Oracle数据库                                                                                                                            | GaussDB数据库 | 差异                                                    |
|:---|:---|:---|
| CURSOR cursor_name \[ parameter_list \] RETURN return_type;                                                                           | 支持         | -                                                     |
| CURSOR cursor_name \[ parameter_list \] \[ RETURN return_type \] IS select_statement; | 支持        | -                                                     |
| OPEN                                                                                                                                    | 支持          | -                                                     |
| CLOSE                                                                                                                                 | 支持，有差异   | GaussDB在exception内部会自动关闭，Oracle在exception内部不会自动关闭。 |
| FETCH                                                                                                                                | 支持          | -                                                   |
| CURRENT OF CURSOR                                                                                                                      | 支持        | -                                                    |
   
表7显式游标属性 
| Oracle数据库  | GaussDB数据库 |
|:---|:---|
| SQL%FOUND   | 支持           |
| SQL%NOTFOUND | 支持           |
| SQL%ROWCOUNT | 支持          |
| SQL%ISOPEN    | 支持           |
   
表8游标循环 
| Oracle数据库 | GaussDB数据库                                                                                                                                 |
|:---|:---|
| FOR LOOP | 支持，有差异。 对于FORALL + BULK COLLECT INTO场景下， INTO变量在GaussDB中仅返回单条DML语句执行结果，在Oracle中返回DML语句累计执行结果。 |
   
表9自治事务支持场景 
| Oracle数据库 | GaussDB数据库 |
|:---|:---|
| 存储过程       | 支持         |
| 匿名块       | 支持       |
| 函数         | 支持        |
| Package    | 支持        |
   
