真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PLSQL集合

PLSQL集合

  • 索引表(或者叫做關(guān)聯(lián)數(shù)組,associative array )

    創(chuàng)新互聯(lián)公司服務(wù)緊隨時代發(fā)展步伐,進(jìn)行技術(shù)革新和技術(shù)進(jìn)步,經(jīng)過十載的發(fā)展和積累,已經(jīng)匯集了一批資深網(wǎng)站策劃師、設(shè)計師、專業(yè)的網(wǎng)站實(shí)施團(tuán)隊(duì)以及高素質(zhì)售后服務(wù)人員,并且完全形成了一套成熟的業(yè)務(wù)流程,能夠完全依照客戶要求對網(wǎng)站進(jìn)行網(wǎng)站設(shè)計制作、做網(wǎng)站、建設(shè)、維護(hù)、更新和改版,實(shí)現(xiàn)客戶網(wǎng)站對外宣傳展示的首要目的,并為客戶企業(yè)品牌互聯(lián)網(wǎng)化提供全面的解決方案。

  • 嵌套表(nested table)

  • 變長數(shù)組(varray)

  • 二維數(shù)組(多層集合)

索引表

---創(chuàng)建索引表類型的語法如下所示:               

TYPE  type_name IS TABLE OF  element_type

   INDEX BY index_type;  

table_name  TYPE_NAME;

--其中,element_type 指明集合中存放的數(shù)據(jù)的類型

--index_type指定下標(biāo)的類型。只能是整型或者字符串

--使用下標(biāo)來引用索引表中的單個元素,如下所示:

table_name(index);

---示例1:分別聲明一個游標(biāo)和一個索引表類型,游標(biāo)

--從student表中檢索出前10個學(xué)生的姓名。遍歷游標(biāo),

--將每個學(xué)生的姓名保存到一個索引表類型的集合中,

--然后從集合中取出每個學(xué)生的姓名打印到屏幕上

declare
  --聲明游標(biāo),保存10個學(xué)生姓名
 cursor c_student is
   select last_name
     from student
     where rownum <= 10; 
  --聲明索引表集合類型
 type last_name_type is table of student.last_name%type
   index by pls_integer;   
  --聲明集合變量
 last_name_tab last_name_type;
  --聲明下標(biāo)變量
 v_index pls_integer := 0;
begin
  --遍歷游標(biāo)
  forr_student in c_student loop
   v_index := v_index + 1;
   --將學(xué)生姓名保存到集合中
   last_name_tab(v_index) := r_student.last_name; 
  endloop;
  --遍歷集合
  fori in 1..10 loop
   dbms_output.put_line( last_name_tab(i));
  endloop;
  --注意:引用不存在的集合元素會拋出NO_DATA_FOUND異常。
  --例如
 --dbms_output.put_line(last_name_tab(11));
end;

嵌套表

創(chuàng)建嵌套表的語法如下所示:

TYPE type_name IS TABLEOF element_type;

table_name  TYPE_NAME;

--該聲明非常類似于索引表的聲明,只是沒有INDEXBY子句。

--嵌套表的下標(biāo)類型固定為Integer整型

declare
  --聲明游標(biāo),保存10個學(xué)生姓名
 cursor c_student is
   select last_name
     from student
     where rownum <= 10;   
  --聲明嵌套表集合類型
 type last_name_type is table of student.last_name%type;
  --聲明集合變量。必須使用構(gòu)造器函數(shù)進(jìn)行初始化
  last_name_tab last_name_type := last_name_type();
  --聲明下標(biāo)變量
  v_indexpls_integer := 0;
begin
  --遍歷游標(biāo)
  forr_student in c_student loop
   v_index := v_index + 1;
   --必須調(diào)用extend方法添加存儲空間
    last_name_tab.extend;         --和數(shù)組一樣,每賦值一個元素需調(diào)用extend
   --將學(xué)生姓名保存到集合中
   last_name_tab(v_index) := r_student.last_name; 
  endloop;
  --遍歷集合
  fori in 1..10 loop
   dbms_output.put_line( last_name_tab(i));
  endloop; 
end;

變長數(shù)組

創(chuàng)建變長數(shù)組的語法如下所示:

TYPE  type_name IS VARRAY(size_limit) OFelement_type ;

varray_name  TYPE_NAME;

--size_limit:最大元素個數(shù)

 

--它和嵌套表類型的區(qū)別是:他有最大元素個數(shù)限制

--修改上例,使用保長數(shù)組類型

declare
  --聲明游標(biāo),保存10個學(xué)生姓名
 cursor c_student is
   select last_name
     from student
     where rownum <= 10;
  --聲明變長數(shù)組集合類型
  type last_name_type is varray(10) of student.last_name%type; 
  --聲明集合變量。必須使用構(gòu)造器函數(shù)進(jìn)行初始化
  last_name_tab last_name_type := last_name_type();
  --聲明下標(biāo)變量
 v_index pls_integer := 0;
begin
  --遍歷游標(biāo)
  forr_student in c_student loop
   v_index := v_index + 1;
   --必須調(diào)用extend方法添加存儲空間
    last_name_tab.extend;   --每賦值一個元素需調(diào)用extend
   --將學(xué)生姓名保存到集合中
   last_name_tab(v_index) := r_student.last_name; 
  endloop;
  --遍歷集合
  fori in 1..10 loop
   dbms_output.put_line( last_name_tab(i));
  endloop; 
end;

--可見,變長數(shù)組在編碼使用的限制和嵌套表完全相同。

二維數(shù)組

Oracle 9i開始,PL/SQL允許創(chuàng)建元素類型為集合類型的集合。這種集合被稱為多層集合。

二維數(shù)組:有一個一維數(shù)組,其中的每個元素又是一個一維數(shù)組,那么這個一維數(shù)組叫做二維數(shù)組。

為引用這個多層集合中單獨(dú)的元素,需要使用如下語法:

varray_name(subscript  of the outer  varray)

          (subscript  of the  inner varray)

declare
  --聲明變長數(shù)組類型
  typevarray_type1 is varray(4) of number;
  --聲明多層集合(二維數(shù)組)
  typevarray_type2 is varray(3) of varray_type1;
  varray1varray_type1 := varray_type1(2,4,6,8);
  varray2varray_type2 := varray_type2(varray1);
begin
 varray2.extend;  --調(diào)用extend
  varray2(2):= varray_type1(1,3,5,7);
 varray2.extend;  --調(diào)用extend
  varray2(3):= varray_type1(8,8,8,8); 
  --遍歷集合
  for i in1..3 loop
    for j in1..4 loop
      dbms_output.put_line('varray2('||i||')('||j
      ||')='||varray2(i)(j));
    end loop;
  end loop;
 dbms_output.put_line('-------------------------------');
 
  --遍歷集合,實(shí)際的寫法
  for i invarray2.first..varray2.last loop
    for j invarray2(i).first..varray2(i).last loop
     dbms_output.put_line('varray2('||i||')('||j
      ||')='||varray2(i)(j));
    end loop;
  end loop;
end;
/

分享標(biāo)題:PLSQL集合
網(wǎng)頁鏈接:http://weahome.cn/article/gcppde.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部