oracle获取游标返回值,oracle函数返回结果集(动态查询Sql并定义游标)
时间: 2023-09-17 10:09:53 浏览: 247
Oracle与SQLServer的SQL语法差异总结1
要获取游标返回值或者使用函数返回结果集,需要使用Oracle中的游标和PL/SQL语句。以下是一个例子:
```
CREATE OR REPLACE FUNCTION get_emp_salary (dept_id NUMBER)
RETURN SYS_REFCURSOR
IS
emp_cursor SYS_REFCURSOR;
query_str VARCHAR2(4000);
BEGIN
query_str := 'SELECT emp_name, salary FROM employees WHERE department_id = ' || dept_id;
OPEN emp_cursor FOR query_str;
RETURN emp_cursor;
END;
```
这个函数使用一个动态查询语句来定义游标,然后将游标作为函数的返回值。在调用函数时,可以使用SYS_REFCURSOR类型的变量来接收结果集。
```
DECLARE
emp_cursor SYS_REFCURSOR;
emp_name employees.emp_name%TYPE;
salary employees.salary%TYPE;
BEGIN
emp_cursor := get_emp_salary(10);
LOOP
FETCH emp_cursor INTO emp_name, salary;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(emp_name || ' earns ' || salary);
END LOOP;
CLOSE emp_cursor;
END;
```
在这个例子中,我们调用了get_emp_salary函数,将结果集赋值给emp_cursor。然后使用FETCH语句从游标中获取每一行数据,直到游标读取完毕。最后使用CLOSE语句关闭游标。
阅读全文