oracle自定义函数返回多行记录
时间: 2023-10-12 08:10:29 浏览: 290
Oracle 自定义函数可以使用游标来返回多行记录。以下是一个示例:
```
CREATE OR REPLACE FUNCTION get_employee_names(dept_id IN NUMBER)
RETURN SYS_REFCURSOR
IS
emp_cursor SYS_REFCURSOR;
BEGIN
OPEN emp_cursor FOR
SELECT employee_name
FROM employees
WHERE department_id = dept_id;
RETURN emp_cursor;
END;
```
在这个例子中,我们创建了一个名为 `get_employee_names` 的函数,它接受一个 `dept_id` 参数。函数使用 `SYS_REFCURSOR` 类型的游标来查询 `employees` 表中特定部门的员工名称,并返回游标。在调用这个函数时,我们可以使用游标来获取结果集。以下是一个示例:
```
DECLARE
emp_cursor SYS_REFCURSOR;
emp_name VARCHAR2(100);
BEGIN
emp_cursor := get_employee_names(10);
LOOP
FETCH emp_cursor INTO emp_name;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(emp_name);
END LOOP;
CLOSE emp_cursor;
END;
```
在这个例子中,我们声明了一个 `emp_cursor` 变量,并使用 `get_employee_names` 函数来初始化它。然后,我们使用循环来迭代游标中的每个记录,并将结果打印到控制台上。最后,我们关闭游标以释放资源。
阅读全文