oracle sql查询的游标中的ROWNUM不工作
请看下面的oracle函数oracle sql查询的游标中的ROWNUM不工作,oracle,plsql,oracle10g,Oracle,Plsql,Oracle10g,请看下面的oracle函数 DROP FUNCTION get_mapper_requests; CREATE OR REPLACE FUNCTION get_mapper_requests(p_status IN NUMBER, p_rownum IN NUMBER) RETURN SYS_REFCURSOR AS CUR_MED_MAPPER_STATUS SYS_REFCURSOR; BEGIN dbms_output.put_line('Status Value:'||p_st
DROP FUNCTION get_mapper_requests;
CREATE OR REPLACE FUNCTION get_mapper_requests(p_status IN NUMBER, p_rownum IN NUMBER)
RETURN SYS_REFCURSOR
AS
CUR_MED_MAPPER_STATUS SYS_REFCURSOR;
BEGIN
dbms_output.put_line('Status Value:'||p_status);
dbms_output.put_line('Row Count:'||p_rownum);
OPEN CUR_MED_MAPPER_STATUS FOR SELECT cmd_id,status FROM CDFDBA.MED_COM_MAPPER_CMDS WHERE
STATUS=p_status and ROWNUM < p_rownum;
RETURN CUR_MED_MAPPER_STATUS;
END;
请支持。在您输入呼叫代码后,我认为您丢失了
EXIT WHEN c%NOTFOUND;
如果没有这一点,我会假设您的代码只是不断使用最后获取的行调用DBMS_输出,直到您得到填充DBMS输出缓冲区的错误。。它现在起作用了。但在这里,我假设当我将值传递为10时,游标将只有10条记录。你能给我详细介绍一下这种情况吗?循环并没有神奇地绑定到光标上。所以你需要明确地打破我们的循环。您的光标正在获取9行
declare
cursor c is select * from <table_name> where rownum < 15; -- SELECT ONLY 15 ROWS OF TABLE
type t is table of c%rowtype index by pls_integer;
tab t;
begin
open c;
loop
fetch c bulk collect into tab limit 10; -- FETCH cursor in chunks of 10
dbms_output.put_line('X');
exit when c%notfound;
end loop;
end;
declare
cursor c is select * from <table_name> where rownum < 15; -- SELECT ONLY 15 ROWS OF TABLE
type t is table of c%rowtype index by pls_integer;
tab t;
begin
open c;
loop
fetch c bulk collect into tab limit 10; -- FETCH cursor in chunks of 10
dbms_output.put_line('X');
exit when c%notfound;
end loop;
end;