PLSQL Language Referenc-PL/SQL集合和記錄-集合型別

LuiseDalian發表於2014-03-11

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/SQL3種型別的集合: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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章