PLSQL中的內存表--Index By Table

其實內存表有點相似於java中的數組,可是它有比起數組更強大的地方。java

1.首先來簡單介紹內存表的做用:sql

  •   使用BINARY_INTEGER 類型構成的索引主鍵數組

  •    簡單類型 或者用戶自定義類型的字段做爲具體的數組元素ide

2.如何來使用內存表類型呢?oop

      定義內存表類型spa

        TYPE type_name IS  TABLE OF 存儲類型(number , employees.last_name%TYPE , employees%ROWTYPE , varchar2)    .net


             INDEX BY (BINARY_INTEGER,varchar2(80)..) orm

               ---varchar2(80)表示下標能夠經過字符串來訪問,這比java中數組功能強大blog

     聲明該類型變量索引

         identifier  type_name


3.內存表中的一些屬性和方法

   賦值:

        identifier(1) := 'Jams'    --這是index by binary_integer

        identifier('A') := 'Jams'  -- 這是index by varchar2

       與java中數組區別就是內存表能夠用字符串做爲下標

    3-1.count方法:

         identifier.count  --返回內存表中行的數目

    3-2.exists方法:

        identifier.exists(1) --判斷下標爲1的元素存不存在

    3-3.first 和 last屬性:

        first:返回第一行的索引

        last: 返回最後一行的索引

first 和 last的用法:

  通常使用在遍歷內存表的狀況

for i in identifier.first .. identifier.last  loop

 ............
end loop

這裏必須注意兩點:

   1.若是內存表中沒有任何數據,可是你卻經過這種方式遍歷它,會報錯,因此在遍歷前應該用

count方法來作一次判斷

    2.假如內存表中的數據下標不連續怎麼辦?

好比 內存表只有identifier(2), identifier(5),

當遍歷到下標爲1,3,4時,要作異常或報錯處理,不然會報錯。


 3-4.delete方法:

            identifier.delete(1) --刪除內存表中下標爲1的元素

            identifier.delete --刪除內存表全部元素

     3-5.next和prior屬性:

         identifier.next(1)  --返回內存表中下標爲1行的下一行索引

            identifier.prior(2) --返回內存表中下標爲2行的上一行索引



這裏附帶上INDEX BY BINARY_INTEGER的做用

    --http://blog.itpub.net/26690043/viewspace-722081/

相關文章
相關標籤/搜索