文档首页/
数据库和应用迁移 UGO/
用户指南/
语法转换指南/
转换错误码/
Oracle To GaussDB 转换错误码/
U0100083:GaussDB不支持 DBMS_SQL.RETURN_RESULT 函数
更新时间:2025-06-04 GMT+08:00
U0100083:GaussDB不支持 DBMS_SQL.RETURN_RESULT 函数
描述
Oracle12C引入DBMS_SQL.RETURN_RESULT:动态 SQL 中隐式返回结果集,不需要显示声明出参sys_refcursor,注意可以同时返回多个结果集。
GaussDB 不支持 DBMS_SQL.RETURN_RESULT函数。
数据库类型与版本
- 源库类型与版本:UGO 支持的 Oracle 版本。
- 目标库类型与版本:UGO 支持的 GaussDB 版本。
语法示例
CREATE OR REPLACE PROCEDURE get_dynamic_results (p_min_salary IN NUMBER) AS l_cursor SYS_REFCURSOR; BEGIN -- 返回第一个结果集:员工信息 OPEN l_cursor FOR SELECT emp_id, emp_name, salary FROM employees WHERE salary >= p_min_salary; DBMS_SQL.RETURN_RESULT(l_cursor); -- 返回第二个结果集:部门信息 OPEN l_cursor FOR SELECT dept_id, dept_name, location FROM departments; DBMS_SQL.RETURN_RESULT(l_cursor); END; /
改造建议
注释掉 DBMS_SQL.RETURN_RESULT,返回几个结果集,多加几个out出参,参数类型是sys_refcursor,注意出参变量名字不可重复。
GaussDB改写后:
CREATE OR REPLACE PROCEDURE get_dynamic_results (p_min_salary IN NUMBER, l_cursor out SYS_REFCURSOR,l_cursor2 out SYS_REFCURSOR) AS --- l_cursor SYS_REFCURSOR; BEGIN -- 返回第一个结果集:员工信息 OPEN l_cursor FOR SELECT emp_id, emp_name, salary FROM employees WHERE salary >= p_min_salary; -- DBMS_SQL.RETURN_RESULT(l1_cursor); -- 返回第二个结果集:部门信息 OPEN l_cursor2 FOR SELECT dept_id, dept_name, location FROM departments; ---DBMS_SQL.RETURN_RESULT(l_cursor); END; /