PLSQL基礎(二) 表(相當於數組)

來源:互聯網
上載者:User

 

 

 

 

表 (相當於數組)

定義一個表類型的文法如下:

TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER

其中Tabletype是被定義的表類型的名,Type是預定義的標量類型或者%TYPE來引用的標量類型。表的索引是BINARY_INTEGER類型,當定義了表類型後,就可以聲明該類型的變數了。

 

--定義表類型t_NameTable,其元素類型是auths資料庫表中的name列的類型

TYPE t_NameTable IS TABLE OF auths.name%TYPE

INDEX BY BINARY_INTEGER;

 

--定義表類型t_Address,其元素類型是auths表中的address列的類型

TYPE t_AddressTable IS TABLE OF auths.address%TYPE

INDEX BY BINARY_INTEGER;

 

--聲明兩個表類型變數

v_name t_NameATable;

v_Address t_AddressTable;

 

當定義了表類型,並聲明了這個類型變數後,就可以通過下面的文法應用PLSQL表中的元素了:

tablename(index);

其中tablename是表明,index是表的索引,它用BINARY_INTEGER類型的變數或是能夠轉換成BINARY_INTEGER類型的運算式表示.

 

使用上面的表,為表元素賦值:

BEGIN

    v_Name(2) := 'Wang';

    v_Address(-3) := 'streetr 1';

END;

 

 

eg2:

 DECLARE

          TYPE t_AuthorRecord IS TABLE OF auths%ROWTYPE

           INDEX BY BINARY_INTEGER;

           v_Auths t_AuthorRecord;

BEGIN

            SELECT *

            INTO v_Auths(00009)

            FROM auths

            WHERE author_code = 'A00009';

END;

 

因為v_Auths表中的每一個元素都是記錄,所以可以通過下面的文法引用記錄中的域

table(index).field

 

記錄表在相當程度上提高了PLSQL表的功能,因為一個記錄表就可以存放一個資料庫表中的所有資訊。

PLSQL表與數組一樣,當時表的實際結構與數組是不一樣的,它與C中的數組有以下不同:

1)PLSQL表中的元素沒有特定的順序,因為表中的元素不像數組一樣被連續地儲存在一個空間內。

2)在PLSQL表中的KEY不必是連續的,任意BINARY_INTEGER類型的值或是運算式都可以作為表的索引(key列)。

3)當向一個PLSQL表中插入一個元素時,就為該表分配了用以存放該元素的儲存空間。plsql表的大小是沒有限制的。

         

 

 表屬性

PLSQL中,不僅引入了表,而且通過了表屬性擴充了PLSQL表的功能,使用表屬性的文法是:

table.attribute

 

文法                         傳回型別                     描述

Table.COUNT         NUMBER                    返回PLSQL表中元素個數

Table.DELETE         N/A                           刪除PLSQL表中所有元素

Table.DELETE(i)      N/A                          刪除PLSQL表中索引號為i指定的元素

Table.DELETE(i,j)     N/A                         刪除PLSQL表中索引號i到j之間(包括i和j)指定的元素

Table.EXISTS(i)        BOOLEAN               如果PLSQL表中索引號為i的元素存在,則返回TRUE

Table.FIRST            BINARY_INTEGER    返回PLSQL表中最後一個元素(索引號最小)的索引

Table .LAST            BINARY_INTEGER    返回PLSQL表中最後一個元素(索引號最大)的索引

Table.NEXT(i)         BINARY_INTEGER    返回PLSQL表中索引號為i的元素的後繼一個元素的索引

Table.PRIOR (i)      BINARY_INTEGER     返回PLSQL表中索引號i的元素的前一個元素的索引

 

 

表中的索引號從1開始,每增加一個元素,索引號隨之增加1,也就是說索引號為1的下一個元素的索引號是2,再下一個元素的索引號為3,以此類推,使用這樣的方法建立的PLSQL表,其表元素在控制結構體中的迴圈實現起來更簡單,當PLSQL塊在Pro*C或OCI程式中北調用或被嵌入時,使用上述所有方法建立的PLSQL表能綁定到C語言的數組上.

 

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.