Пожалуйста, посмотрите на приведенную ниже функцию оракула:
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;
Вышеприведенная функция возвращает все записи, даже если я передам любое целочисленное значение переменной p_rownumНапример, если p_rownum = 10, функция возвращает все записи,
Вызывающий блок
DECLARE
c SYS_REFCURSOR;
v VARCHAR2(1000);
v1 VARCHAR2(1000);
BEGIN
dbms_output.put_line('Hello');
c := get_mapper_requests(0, 10);
LOOP
FETCH c INTO v,v1;
dbms_output.put_line('Value from cursor: '||v||' '||v1);
END LOOP;
CLOSE c;
END;
/
Пожалуйста, поддержите.