Collections(Nested Table)進行資料處理
前言
Nested Table使用上比較像是陣列,此Collection無法自訂index型態,索引一率從整數1開始,使用概念上並不困難,因此不加以贅述。
實作
使用語法如下
1
2
3
4
| -- 宣告 Collection 型態
TYPE 型態名稱 IS TABLE OF 元素型態 [NOT NULL];
-- 宣告 Collection 變數並初始化
COLLECTION 變數名稱 Collections 型態 ([元素1, 元素2, 元素3, ...]) := Collections 型態 ([元素1, 元素2, 元素3, ...]);
|
以下進行相關示範
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| DECLARE
-- 宣告 I 變數
I INT := 1;
-- 宣告 Collection 型態
TYPE ARTICLE_COLLETION IS TABLE OF ARTICLE.TITLE%TYPE;
-- 宣告 Collection 變數
ARTICLE_ARRAY ARTICLE_COLLETION := ARTICLE_COLLETION();
-- 宣告 CURSOR 變數
CURSOR C_ARTICLE IS SELECT ID, TITLE, TO_CHAR(CREATE_DATE, 'YYYY/MM/DD HH24:MI') AS CREATE_DATE, TO_CHAR(MODIFY_DATE, 'YYYY/MM/DD HH24:MI') AS MODIFY_DATE FROM ARTICLE;
-- 宣告 RECORD 變數
R_ARTICLE C_ARTICLE%ROWTYPE;
BEGIN
-- 開啟游標
OPEN C_ARTICLE;
-- 提取資料
FETCH C_ARTICLE INTO R_ARTICLE;
DBMS_OUTPUT.PUT_LINE('存放元素至 COLLECTION');
-- 判斷是否有讀取到資料,並將資料存放置 Collection 變數
WHILE C_ARTICLE%FOUND LOOP
-- 拓展 Collection 變數
ARTICLE_ARRAY.EXTEND;
-- 將值設定給 Collection
ARTICLE_ARRAY(I) := R_ARTICLE.TITLE;
-- 索引值遞增
I := I+1;
-- 提取資料
FETCH C_ARTICLE INTO R_ARTICLE;
END LOOP;
-- 關閉游標
CLOSE C_ARTICLE;
DBMS_OUTPUT.PUT_LINE('尋訪 COLLECTION');
-- 進行 COLLECTION 尋訪
FOR I IN ARTICLE_ARRAY.FIRST .. ARTICLE_ARRAY.LAST LOOP
DBMS_OUTPUT.PUT_LINE('INDEX: ' || I || ', VALUE: ' || ARTICLE_ARRAY(I));
END LOOP;
END;
|
執行結果
1
2
3
4
5
6
7
8
9
10
11
12
| 存放元素至 COLLECTION
尋訪 COLLECTION
INDEX: 1, VALUE: 楊藝的洋溢生活 - 我的第一篇 PL/SQL 筆記
INDEX: 2, VALUE: 楊藝的洋溢生活 - 我的 JAVA 學習歷程
INDEX: 3, VALUE: 楊藝的洋溢生活 - C# 程式架構
INDEX: 4, VALUE: 楊藝的洋溢生活 - Eclipse 程式碼提示設定
INDEX: 5, VALUE: 楊藝的洋溢生活 - TightVNC 檔案傳輸
INDEX: 6, VALUE: 楊藝的洋溢生活 - Apache Struts 2 檔案上傳
INDEX: 7, VALUE: 楊藝的洋溢生活 - Apache Struts 2 表單驗證 (驗證框架)
INDEX: 8, VALUE: 楊藝的洋溢生活 - Apache Struts 2 攔截器設定與使用
INDEX: 9, VALUE: 楊藝的洋溢生活 - MySQL 外部 IP 連線 (Ubuntu Server)
INDEX: 10, VALUE: 楊藝的洋溢生活 - CentOS 切換 root 免密碼設定
|