oracle 存储过程 返回结果集
时间: 2023-06-30 22:24:56 浏览: 153
Oracle 存储过程返回结果集.doc
在 Oracle 存储过程中,可以使用 REF CURSOR 来返回结果集。REF CURSOR 可以看作是一个指针,指向一个查询的结果集。在存储过程中,可以使用 OPEN、FETCH 和 CLOSE 三个语句来操作 REF CURSOR,从而获取结果集。
下面是一个示例存储过程,返回员工表中工资大于指定金额的员工信息:
```
CREATE OR REPLACE PROCEDURE get_high_salary_emp (p_salary IN NUMBER, p_result OUT SYS_REFCURSOR)
IS
BEGIN
OPEN p_result FOR
SELECT * FROM emp WHERE salary > p_salary;
END;
```
在这个存储过程中,p_salary 是输入参数,表示要查询的最低工资金额;p_result 是输出参数,表示查询结果集。在存储过程中,使用 OPEN 语句打开结果集,FETCH 语句获取结果集中的数据行,CLOSE 语句关闭结果集。
可以通过以下方式调用这个存储过程获取结果集:
```
DECLARE
v_result SYS_REFCURSOR;
v_empno emp.empno%TYPE;
v_ename emp.ename%TYPE;
v_salary emp.salary%TYPE;
BEGIN
get_high_salary_emp(5000, v_result);
LOOP
FETCH v_result INTO v_empno, v_ename, v_salary;
EXIT WHEN v_result%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(v_empno || ', ' || v_ename || ', ' || v_salary);
END LOOP;
CLOSE v_result;
END;
```
在这个示例中,调用存储过程 get_high_salary_emp 并将结果集存储在 v_result 变量中。然后,使用循环和 FETCH 语句逐行获取结果集中的数据,并输出到控制台。最后,使用 CLOSE 语句关闭结果集。
阅读全文