2014-07-23 39 views
0

爲什麼此程序不起作用? 我試圖通過遊標得到表的行:AF_EMPLOYEE,這將與ASC/DESC(根據案例)。oracle:程序與案例

Create or Replace Procedure return_rows_EMPLOYEE (in_order in number, 
in_sorting in VARCHAR2, in_job in VARCHAR2, out_cursor OUT SYS_REFCURSOR) As 
Begin 
    OPEN out_cursor for 
    select * from AF_EMPLOYEE 
    WHERE EMPL_JOB_TITLE = in_job 
    ORDER BY in_sorting 
    CASE in_order 
    WHEN 1 THEN ASC 
    ELSE DESC 
    END 
End; 
+0

請添加更多問題描述。 –

+0

什麼是'in_order'? –

+0

程序參數 – paubo147

回答

-1
Create or Replace Procedure return_rows_EMPLOYEE (in_order in number, 
in_sorting in VARCHAR2, in_job in VARCHAR2, out_cursor OUT SYS_REFCURSOR) As 
Begin 
    if in_order = 1 THEN 
    OPEN out_cursor for 
    select * from AF_EMPLOYEE 
    WHERE EMPL_JOB_TITLE = in_job 
    ORDER BY in_sorting ASC 
    else 
    OPEN out_cursor for 
    select * from AF_EMPLOYEE 
    WHERE EMPL_JOB_TITLE = in_job 
    ORDER BY in_sorting DESC 
    end if; 
End; 

更新 試試這個:

Create or Replace Procedure return_rows_EMPLOYEE (in_order in number, 
in_sorting in VARCHAR2, in_job in VARCHAR2, out_cursor OUT SYS_REFCURSOR) As 
Begin 
    OPEN out_cursor for 
    select * from AF_EMPLOYEE 
    WHERE EMPL_JOB_TITLE = in_job 
    ORDER BY 
    case when in_order = 1 then 
     in_sorting 
    end, 
    case when in_order <> 1 then 
     in_sorting 
    end desc; 
End; 
+0

謝謝。但我需要與案例,這是可能的? @ paubo147 – user3868442

+0

這不起作用。我得到這個錯誤: 錯誤(6,6):PL/SQL:忽略SQL語句 錯誤(9,3):PL/SQL:ORA-00933:SQL命令未正確結束 錯誤(15,4):PLS -00103:遇到符號「;」當期待以下其中一項時:如果 – user3868442

+0

已更改!告訴我,如果它有效。我現在無法訪問數據庫來測試它。 – paubo147

0

如果排序列數字,你可以使用case否定它,但它不是好的代碼!

CREATE OR REPLACE PROCEDURE return_rows_EMPLOYEE (in_order in number, 
in_sorting in VARCHAR2, in_job in VARCHAR2, out_cursor OUT SYS_REFCURSOR) As 
Begin 
    OPEN out_cursor for 
    select * from AF_EMPLOYEE 
    WHERE EMPL_JOB_TITLE = in_job 
    ORDER BY 
    CASE in_sorting WHEN 'ASC' THEN sort_column 
        WHEN 'DESC' THEN -sort_column 
    END; 
END; 
/
+0

@wolφi這不起作用。 – user3868442