如何提取&;在oracle plsql中打印函数外部的游标值
我是pl/sql新手。我的怀疑可能是基本的,但我无法找到答案。非常感谢您的帮助。问题是 我创建了一个返回游标的函数如何提取&;在oracle plsql中打印函数外部的游标值,oracle,plsql,oracle-apex,Oracle,Plsql,Oracle Apex,我是pl/sql新手。我的怀疑可能是基本的,但我无法找到答案。非常感谢您的帮助。问题是 我创建了一个返回游标的函数 CREATE OR REPLACE FUNCTION get_empNumber (dept_name varchar2) RETURN SYS_REFCURSOR IS l_rc SYS_REFCURSOR; BEGIN OPEN l_rc FOR select DISTINCT emp_NUMBER FROM emp where dep
CREATE OR REPLACE FUNCTION get_empNumber (dept_name varchar2)
RETURN SYS_REFCURSOR
IS
l_rc SYS_REFCURSOR;
BEGIN
OPEN l_rc FOR
select DISTINCT emp_NUMBER FROM emp where department_NAME = dept_name;
RETURN l_rc;
END ;
如果我想通过调用函数来访问上面返回的游标,我应该怎么做?在下面的代码中尝试过,但会出现错误。因为我在Oracle Apex中尝试过,它只显示编译错误,没有提供任何进一步的错误详细信息
DECLARE
cnumber number;
CURSOR c1 IS get_bugNumber ('John');
BEGIN
OPEN c1;
LOOP
FETCH c1 INTO cnumber ;
EXIT WHEN c1%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Emp_No= ' || cnumber );
END LOOP;
CLOSE c1;
END;
函数返回一个ref游标。声明一个并将函数结果分配给它: 演示功能:
create or replace function f
return sys_refcursor
as
c sys_refcursor;
begin
open c for select 'Hello, world' as text from dual;
return c;
end f;
测试:
您的示例中甚至没有调用get_empNumber。如何打印光标值。由于光标包含emp编号列表,下面的代码正确吗?mycursor:=f();DBMS_OUTPUT.PUT_行(mycursor);知道了。使用循环。MyRec类型为RECORD(col1-VARCHAR2(10),col2-VARCHAR2(20),…)--定义记录rec MyRec;将refCursor循环提取到rec中;未找到引用光标%1时退出;dbms|u输出.put|u行(rec.col1 | |','| | rec.col2 | |','| |……);端环;更新答案。
declare
mycursor sys_refcursor;
type myrectype is record
( text varchar2(100) );
r myrectype;
begin
mycursor := f();
loop
fetch mycursor into r;
exit when mycursor%notfound;
dbms_output.put_line(r.text);
end loop;
close mycursor;
end;