PLSQL Language Referenc-PL/SQL集合和記錄-集合型別
PL/SQL集合和記錄
複合資料型別儲存的值具有內部結構,可以將整個複合變數作為引數傳遞給子程式,可以單獨地訪問複合變數中的內部結構。內部結構可以是scalar或仍是複合型別。PL/SQL允許定義2種型別的複合資料型別:集合和記錄。
在集合中,內部結構總是具有相同的資料型別,被稱為元素。可以通過下標訪問集合中的每個元素。
變數名(下標); |
為了定義一個集合變數,可以先定義一個集合型別,然後使用該集合型別定義變數;也可以使用%TYPE。
在記錄中,內部結構可以有不同的資料型別,稱為域。可以通過域的名稱來訪問記錄變數中的每個域。
變數名.域名 |
建立記錄型別變數,可以先定義一個記錄型別,然後使用該記錄型別定義變數;可以使用%ROWTYPE;也可以使用%TYPE
可以建立包含記錄的集合,和包含集合的記錄。
注意:本章的許多練習中使用到了下面的儲存過程:
CREATE OR REPLACE PROCEDURE print (n INTEGER) IS BEGIN IF n IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE(n); ELSE DBMS_OUTPUT.PUT_LINE('NULL'); END IF; END print; |
集合型別
PL/SQL有3種型別的集合:associative陣列,VARRAY(可變陣列),巢狀表。
集合型別 |
元素個數 |
下標型別 |
密集/稀疏 |
未初始化 的狀態 |
定義位置 |
ADT型別? |
關聯陣列 |
不確定 |
字串/ PLS_INTEGER |
2者之一 |
Empty |
塊或包 |
不 |
VARRAY |
確定 |
INTEGER |
始終密集 |
NULL |
塊、包、方案 |
在方案中是 |
巢狀表 |
不確定 |
INTEGER |
開始密集,可能會變成稀疏 |
NULL |
塊、包、方案 |
在方案中是 |
元素個數,如果元素個個數是確定的,則指集合中的最大元素個數;如果元素個數不確定,則最大元素個數是下標的上限值。
密集的:元素之間沒有空隙,就是第1個和最後一個元素都被定義並且有值(值可以為NULL)。
EMPTY集合是存在的,但沒有元素。給空集合新增元素呼叫EXTEND方法。
NULL集合是不存在的,把NULL集合變成存在的集合,必須要初始化它(使用它成為EMPTY集合,或給它賦一個非NULL的值),不能使用EXTEND來初始化NULL集合。
定義位置,定義在PL/SQL塊中的集合型別是一個區域性型別,只有在塊中可訪問。只有當塊是一個單獨的儲存或包子程式時,才被儲存在資料庫中
定義在包規範中的集合型別是公有成員。可以在包外通過限定名來引用它。它儲存在資料庫中。
定義在方案中的集合型別是一個獨立的儲存型別。使用CREATE TYPE來建立。
非PL/SQL複合型別與PL/SQL複合型別的對照關係(problem)
雜湊表 |
關聯陣列 |
無序表 |
關聯陣列 |
集合 |
巢狀表 |
袋子 |
巢狀表 |
陣列 |
VARRAY |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1107180/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Guava集合--新集合型別Guava型別
- List型別集合型別
- python 集合型別 setPython型別
- HashMap與LinkedHashMap型別集合HashMap型別
- 泛型方法、初始集合和集合的遍歷泛型
- [swift 進階]讀書筆記-集合型別協議 C3P5_專門的集合型別Swift筆記型別協議
- python的資料型別(集合)Python資料型別
- C#中常用集合型別C#型別
- 【Redis實戰】有序集合型別Redis型別
- 07.集合和泛型泛型
- 基礎-JAVA集合型別主要區別Java型別
- Java集合學習記錄——IteratorJava
- C#集合型別大揭祕C#型別
- python組合資料型別(集合)Python資料型別
- Hive中的集合資料型別Hive資料型別
- Python基礎之集合和資料型別轉換Python資料型別
- C# 泛型集合的自定義型別排序C#泛型型別排序
- python-資料型別之set集合Python資料型別
- 1.1.5 python基本資料型別之集合Python資料型別
- Python - 基礎資料型別 set 集合Python資料型別
- 資料型別——集合與while迴圈資料型別While
- 資料型別第2篇「字典和集合的原理和應用」資料型別
- Hash Map集合和Hash Set集合
- Go快速入門 07 | 集合型別: array、slice 和 map的使用Go型別
- PL/SQL基本結構---PLSQL複合型別---表型別變數tableSQL型別變數
- Java備忘錄《集合》Java
- javascript 學習記錄 -- 程式設計題集合JavaScript程式設計
- C#泛型集合C#泛型
- Java:Collection集合、泛型Java泛型
- 字典和集合
- C#快速入門教程(22)—— 常用集合型別C#型別
- Unity3D 關於飛行型別集合Unity3D型別
- Redis五大資料型別之 Set(集合)Redis大資料資料型別
- Redis中7種集合型別應用場景Redis型別
- 【java】【集合】陣列和集合的基本概述Java陣列
- Java集合小記Java
- Map集合筆記筆記
- SQL Server中的集合運算: UNION, EXCEPT和INTERSECTSQLServer
- Java集合 Collection、Set、Map、泛型 簡要筆記Java泛型筆記