Oracle 中的表變數(陣列變數)

來源:互聯網
上載者:User

表類型變數又稱index_by表或則PL/SQL表,和資料表是有區別的,是類似於數組的鍵和值的兩列結構。

其定義文法如下:

type 表類型名 is table of 類型 index by binary_integer;

表變數名 表類型;

類型可以是number 、varchar2、date 等資料類型,index by binary_integer 子句代表以符號整數為索引,

這樣訪問表類型變數中的資料方法就是“表變數名(索引符號整數)”,注意與數組不同的是該索引可以是不連續的,而且與資料庫表不同

不能在index-by 表中使用select、insert、update 等sql操作。

下面的程式定義了名為tabletype1和tabletype2的兩個一維表類型,相當於一維數組。table1和table2分別是兩種表類型變數。

Declare

type tabletype1 is table of varchar2(10) index by binary_integer;

type tabletype2 is table of  scott.testtable.recordnumber%type  index by binary_integer;

table1 tabletype1;

table2 tabletype2;

begin

table1(1):='大學';

table1(2):='大專';

table2(1):=88;

table2(2):=55;

dbms_output.put_line(table1(1)||table2(1));

dbms_output.put_line(table1(2)||table2(2));

end;

定義多維表類型變數 :

Declare

type tabletype1 is table of testtable%rowtype index by binary_integer;

table1 tabletype1;

begin

select * into table1(60)

from scott.testtable

where recordnumber=60;

dbms_output.put_line(table1(60).recordnumber||'  '||table1(60).currentdate);

end;

該程式定義了名為tabletype1的多維表類型,相當於多維陣列,table1是多維表類型變數,將資料表tempuser.testtable中recordnumber為60的記錄提取出來存放在table1中並顯示

在定義好的表類型變數裡,可以使用count、delete、first、last、next、exists和prior等屬性進行操作,使用方法為“表變數名.屬性”,返回的是數字。

相關文章

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.