
# U0100084：GaussDB不支持 DBMS_SQL.TO_CURSOR_NUMBER 函数
#### 描述
Oracle中 DBMS_SQL.TO_CURSOR_NUMBER 的作用是获取游标的编号，GaussDB不支持该函数。
**数据库类型与版本**
- 源库类型与版本：UGO 支持的 Oracle 版本。
- 目标库类型与版本：UGO 支持的 GaussDB 版本。
**语法示例**
```
DECLARE
  l_ref_cur SYS_REFCURSOR;
  l_dbms_sql_cursor NUMBER;
BEGIN
   OPEN l_ref_cur FOR SELECT 'Hello, DBMS_SQL!' AS message FROM dual; 
   l_dbms_sql_cursor := DBMS_SQL.TO_CURSOR_NUMBER(l_ref_cur);
  DBMS_SQL.CLOSE_CURSOR(l_dbms_sql_cursor);
END;
/
```
#### 改造建议
注释DBMS_SQL.TO_CURSOR_NUMBER，使用DBE_SQL.REGISTER_CONTEXT+DBE_SQL.SQL_SET_SQL+DBE_SQL.SQL_RUN三个高级包函数等效实现**。**
GaussDB改写后：
```
DECLARE
  l_ref_cur SYS_REFCURSOR;
  l_dbms_sql_cursor NUMBER;
BEGIN
  OPEN l_ref_cur FOR SELECT 'Hello, DBMS_SQL!' AS message FROM dual;
    --l_dbms_sql_cursor := DBMS_SQL.TO_CURSOR_NUMBER(l_ref_cur);
   l_dbms_sql_cursor := DBE_SQL.REGISTER_CONTEXT();
   DBE_SQL.SQL_SET_SQL( l_dbms_sql_cursor,l_ref_cur,2);
   DBE_SQL.SQL_RUN( l_dbms_sql_cursor);
   DBE_SQL.SQL_UNREGISTER_CONTEXT(l_dbms_sql_cursor);
END;
/
```
