前言
RECORD是一種具結構的資料型態變數,可用來保存不同結構的資料,RECORD 依照參照類型的不同可區分以下三種。
- 基於資料表的RECORD(Table-Based Records)
- 基於游標的RECORD(Cursor-Based Records)
- 使用者記錄的RECORD(User-Defined Records)
基於Table的RECORD必須在「DECLARE」先行宣告,使用「資料表%ROWTYPE」屬性參照資料表(或 VIEW)的整列結構。
實作
使用語法如下
1
2
3
4
5
6
7
8
| DECLARE
RECORD 變數1 資料表%ROWTYPE;
RECORD 變數2 VIEW%ROWTYPE;
BEGIN
SELECT * INTO RECORD 變數1 FROM 資料表;
SELECT * INTO RECORD 變數2 FROM VIEW;
.....
END;
|
以下進行相關示範
1
2
3
4
5
6
7
8
| SET FEEDBACK OFF;
SET SERVEROUTPUT ON;
DECLARE
R_ARTICLE ARTICLE%ROWTYPE;
BEGIN
SELECT * INTO R_ARTICLE FROM ARTICLE WHERE TITLE = '楊藝的洋溢生活 - 我的第一篇 PL/SQL 筆記';
DBMS_OUTPUT.PUT_LINE('ID: ' || R_ARTICLE.ID || ', TITLE: ' || R_ARTICLE.TITLE || ', 建立日期: ' || R_ARTICLE.CREATE_DATE || ', 修改日期:' || R_ARTICLE.MODIFY_DATE);
END;
|
執行結果
1
| ID: 7C5E3A5AD847F0D3E050A8C0FD894690, TITLE: 楊藝的洋溢生活 - 我的第一篇 PL/SQL 筆記, 建立日期: 2018-12-07 10:59:37, 修改日期:2018-12-08 12:39:53
|
*基於資料表的RECORD僅可用於單純的表格結構,其原因在於於宣告時需使用「RECORD 變數1 資料表%ROWTYPE;」方法建立 RECORD,因此無法參照需要進行資料表 JOIN 或是使用彙總函數的情況,因此如有上述情形,可先建立 VIEW 彙總所需要的資料,再以 VIEW%ROWTYPE 建立 RECORD,以此方法進行應變。