文档首页/数据库和应用迁移 UGO/用户指南/语法转换指南/转换错误码/Oracle To GaussDB 转换错误码/U0100084:GaussDB不支持 DBMS_SQL.TO_CURSOR_NUMBER 函数
更新时间:2026-03-19 GMT+08:00
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;
/ 
