Sorting does not work with ROW_NUMBER () OVER (ORDER BY
SmidrebSep 14 2011 — edited Sep 14 2011CREATE OR REPLACE PROCEDURE SP_SALES (
p_sales_id IN VARCHAR2,
p_rownnum_from IN NUMBER,
p_rownnum_to IN NUMBER,
p_sort_by IN VARCHAR2,
p_query OUT SYS_REFCURSOR,
)
AS
v_query VARCHAR2 (32000);
v_sort_list VARCHAR2(32000) ;
BEGIN
IF p_spv_sort_by IS NULL THEN
v_sort_list := 'given_name ASC ' ;
ELSE
v_sort_list :=p_spv_sort_by;
END IF ;
DBMS_OUTPUT.PUT_LINE ('v_sort_list '||v_sort_list);
OPEN p_query FOR
SELECT sales_id,
item_id,
order_num,
employee_name
,given_name
dept_id,
manager_name,
ROW_NUM
FROM
(SELECT x.*,
ROW_NUMBER () OVER (ORDER BY v_sort_list ) ROW_NUM
FROM (sales_id,
item_id,
order_num,
employee_name
,given_name
dept_id,
manager_name,
FROM order rvw,
sales pol,
emp ca,
WHERE pol.id = rvw.pr_order_id
AND ca.empid =pol.employee_id
AND status = 'SUP') x )
WHERE ROW_NUM BETWEEN p_rownnum_from AND p_rownnum_to;
-- ORDER by v_sort_list ;
DBMS_OUTPUT.PUT_LINE ('v_sort_list '||v_sort_list);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE ('EX ');
END;
END;
/
SHOW ERRORS
Sorting does not work. Am I doing something wrong here?
executing procedure using below
declare
x SYS_REFCURSOR;
y number;
BEGIN
SP_SALES('70159_502',1,5, 'GIVEN_NAME'||' ASC' ,:x);
--dbms_output.put_line (:x);
END;