Oracle PL/SQL RECORD(User-Defined Records)

使用User-Defined Records進行資料處理

前言

使用Table-Based Records或是Cursor-Based Records參照為表格的所有欄位,在許多的情況進行資料查詢可能只需要部分欄位,因此可透過使用者自訂的RECORD達成,若返回的型態與原本資料表定義的不同,只須於自訂的RECORD進行定義即可。

實作

使用語法如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
DECLARE
    TYPE RECORD 型態名稱 IS RECORD (
        屬性1 資料型態1;
        屬性2 資料型態2;
        .....
    );

    RECORD 變數 RECORD 型態名稱;
BEGIN
    .....
END;

以下進行相關示範

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
SET FEEDBACK OFF;
SET SERVEROUTPUT ON;
DECLARE
    -- 自訂 RECORD 型態
    TYPE REC_ARTICLE IS RECORD (
        ID ARTICLE.ID%TYPE,
        TITLE ARTICLE.TITLE%TYPE,
        CREATE_DATE VARCHAR2(16)
    );

    -- 宣告 RECORD 變數
    R_ARTICLE REC_ARTICLE;
BEGIN
    SELECT ID, TITLE, TO_CHAR(CREATE_DATE, 'YYYY/MM/DD HH24:MI') AS CREATE_DATE INTO R_ARTICLE  FROM ARTICLE WHERE TITLE = '楊藝的洋溢生活 - 我的第一篇 PL/SQL 筆記';
    DBMS_OUTPUT.PUT_LINE('ID: ' || R_ARTICLE.ID);
    DBMS_OUTPUT.PUT_LINE('TITLE: ' || R_ARTICLE.TITLE);
    DBMS_OUTPUT.PUT_LINE('CREATE_DATE: ' || R_ARTICLE.CREATE_DATE);
END;

執行結果

1
2
3
ID: 7C5E3A5AD847F0D3E050A8C0FD894690
TITLE: 楊藝的洋溢生活 - 我的第一篇 PL/SQL 筆記
CREATE_DATE: 2018/12/07 10:59