Oracle PL/SQL游標參數

運用可篩選資料條件的游標參數

前言

於Oracle中的游標是可以接收外部參數,透過外部傳入的參數進行如WHERE條件的篩選。

實作

游標參數語法如下

1
CURSOR 游標名稱 (參數1 資料型態, 參數2 資料型態, ....) IS SELECT 敘述;

以下進行相關範例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
DECLARE
    -- 宣告變數
    V_TITLE ARTICLE.TITLE%TYPE := 'Apache';
    -- 宣告游標
    CURSOR C_ARTICLE (P_TITLE ARTICLE.TITLE%TYPE) IS SELECT * FROM ARTICLE WHERE TITLE LIKE '%' || P_TITLE || '%';
BEGIN
    DBMS_OUTPUT.PUT_LINE('輸入參數: ' || V_TITLE);
    FOR R_ARTICLE IN C_ARTICLE(V_TITLE) LOOP
        DBMS_OUTPUT.PUT_LINE('ID: ' || R_ARTICLE.ID || ', TITLE: ' || R_ARTICLE.TITLE || ', CREATE_DATE: ' || R_ARTICLE.CREATE_DATE || ', MODIFY_DATE: ' || NVL(TO_CHAR(R_ARTICLE.MODIFY_DATE), '無'));
    END LOOP;
END;

執行結果

1
2
3
4
輸入參數: Apache
ID: 7C5E3A5AD84CF0D3E050A8C0FD894690, TITLE: Apache Struts 2 檔案上傳, CREATE_DATE: 2018-12-07 12:16:20, MODIFY_DATE: 無
ID: 7C5E3A5AD84DF0D3E050A8C0FD894690, TITLE: Apache Struts 2 表單驗證 (驗證框架), CREATE_DATE: 2018-12-07 12:16:20, MODIFY_DATE: 無
ID: 7C5E3A5AD84EF0D3E050A8C0FD894690, TITLE: Apache Struts 2 攔截器設定與使用, CREATE_DATE: 2018-12-07 12:16:20, MODIFY_DATE: 無