Oracle 中的表變量(數(shù)組變量) |
發(fā)布時間: 2012/8/16 17:15:00 |
表類型變量又稱index_by表或則PL/SQL表,和數(shù)據(jù)表是有區(qū)別的,是類似于數(shù)組的鍵和值的兩列結構。 其定義語法如下: type 表類型名 is table of 類型 index by binary_integer; 表變量名 表類型; 類型可以是number 、varchar2、date 等數(shù)據(jù)類型,index by binary_integer 子句代表以符號整數(shù)為索引,
這樣訪問表類型變量中的數(shù)據(jù)方法就是“表變量名(索引符號整數(shù))”,注意與數(shù)組不同的是該索引可以是不連續(xù)的,而且與數(shù)據(jù)庫表不同 不能在index-by 表中使用select、insert、update 等sql操作。 下面的程序定義了名為tabletype1和tabletype2的兩個一維表類型,相當于一維數(shù)組。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的多維表類型,相當于多維數(shù)組,table1是多維表類型變量,將數(shù)據(jù)表tempuser.testtable中recordnumber為60的記錄提取出來存放在table1中并顯示 在定義好的表類型變量里,可以使用count、delete、first、last、next、exists和prior等屬性進行操作,使用方法為“表變量名.屬性”,返回的是數(shù)字。 本文出自:億恩科技【mszdt.com】
這樣訪問表類型變量中的數(shù)據(jù)方法就是“表變量名(索引符號整數(shù))”,注意與數(shù)組不同的是該索引可以是不連續(xù)的,而且與數(shù)據(jù)庫表不同 不能在index-by 表中使用select、insert、update 等sql操作。 下面的程序定義了名為tabletype1和tabletype2的兩個一維表類型,相當于一維數(shù)組。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的多維表類型,相當于多維數(shù)組,table1是多維表類型變量,將數(shù)據(jù)表tempuser.testtable中recordnumber為60的記錄提取出來存放在table1中并顯示 在定義好的表類型變量里,可以使用count、delete、first、last、next、exists和prior等屬性進行操作,使用方法為“表變量名.屬性”,返回的是數(shù)字。 本文出自:億恩科技【www.enidc.com】 --> |