文档首页/
数据库和应用迁移 UGO/
用户指南/
语法转换指南/
转换错误码/
Oracle To GaussDB 转换错误码/
U0100084:GaussDB不支持 DBMS_SQL.TO_CURSOR_NUMBER 函数
更新时间:2025-06-04 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 -- 打开REF CURSOR OPEN l_ref_cur FOR SELECT 'Hello, DBMS_SQL!' AS message FROM dual; -- 转换为DBMS_SQL游标号 l_dbms_sql_cursor := DBMS_SQL.TO_CURSOR_NUMBER(l_ref_cur); DBMS_OUTPUT.PUT_LINE('转换后的游标号: ' || l_dbms_sql_cursor); -- 记得关闭游标 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 -- 打开REF CURSOR OPEN l_ref_cur FOR SELECT 'Hello, DBMS_SQL!' AS message FROM dual; -- 转换为DBMS_SQL游标号 --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_OUTPUT.PRINT_LINE('转换后的游标号: ' || l_dbms_sql_cursor); -- 记得关闭游标 DBE_SQL.SQL_UNREGISTER_CONTEXT(l_dbms_sql_cursor); END; /