
# 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(l_cursor);
   OPEN l_cursor2 FOR
       SELECT dept_id, dept_name, location
        FROM departments;
    ---DBMS_SQL.RETURN_RESULT(l_cursor);
END;
/
```
