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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Referenc-PL/SQL集合和記錄-多維集合SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合構造器SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-巢狀表SQL巢狀
- PLSQL Language Referenc-PL/SQL集合和記錄-使用記錄更新行SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列SQL陣列
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄更新和插入的限制SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合比較-比較巢狀表是否相等SQL巢狀
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄比較-將記錄插入到表中SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-集合變數賦值-資料的相容性SQL變數賦值
- PLSQL Language Referenc-PL/SQL集合和記錄-集合變數賦值-將集合操作結果賦給巢狀表SQL變數賦值巢狀
- PLSQL Language Referenc-PL/SQL集合和記錄-使用Multiset Conditions比較巢狀表SQL巢狀
- PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列-宣告關聯陣列常量SQL陣列
- PLSQL Language Referenc-PL/SQL集合和記錄-集合比較-和NULL比較可變陣列和巢狀表變數SQLNull陣列巢狀變數
- PLSQL Language Referenc-PL/SQL集合和記錄-集合變數賦值-給可變陣列和巢狀表賦NULL值SQL變數賦值陣列巢狀Null
- PLSQL Language Referenc-PL/SQL集合和記錄-可變陣列-正確地使用可變陣列SQL陣列
- PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列-正確地使用關聯陣列SQL陣列
- PLSQL Language Referenc-PL/SQL集合和記錄-NSL引數值對字串索引的關聯陣列的影響SQL字串索引陣列
- 【開發篇plsql】plsql資料型別(一) 集合型別SQL資料型別
- pl/sql集合型別(一)SQL型別
- PLSQL Language Referenc-PL/SQL子程式-前向宣告SQL
- PLSQL Language Referenc-PL/SQL子程式-子程式呼叫SQL
- plsql記錄型別SQL型別
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制SQL
- pl/sql集合型別_varray(二)SQL型別
- PLSQL Language Referenc-PL/SQL靜態SQL-自治事務(二)SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-游標變數SQL變數
- Guava集合--新集合型別Guava型別
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-LONG和LONG RAW變數SQL資料型別變數
- PLSQL Language Referenc-PL/SQL子程式-使用子程式的原因SQL
- PLSQL Language Referenc-PL/SQL動態SQL-何時需要動態SQLSQL
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-有限制的子型別SQL資料型別
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-ROWID和UROWID變數SQL資料型別變數
- PLSQL Language Reference-PL/SQL資料型別-SQL資料型別-CHAR和VARCHAR2變數SQL資料型別變數
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-savepoint語句SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-偽列SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-靜態SQL的描述-語句SQL
- PLSQL Language Referenc-PL/SQL靜態SQL-事務處理和控制-隱式回滾SQL
- PLSQL Language Referenc-PL/SQL動態SQL-本地動態SQL(EXECUTE IMMEDIATE語句)SQL