表 (相當於陣列)
定義乙個表型別的語法如下:
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.firstbinary_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語言的陣列上.
plsql基礎學習 二 PLSQL型別
標量資料型別 a.儲存單一的值 b.沒有內部結構 基本標量資料型別 char,varchar2,long,long raw,number,binary integer,pls integer,boolean,date,timestamp 一 oracle資料型別 1.字元資料型別 char,varc...
PLSQL基礎(一)記錄(相當於結構體)
plsql在工作中斷斷續續會用到,每次用的時候,都需要查資料,熟悉一下語法格式.現在特記錄下來,免得以後使用過程中,總是查資料.塊的分類 塊可以分為以下四類 1 無名塊 動態構造並只能執行一次。2 命名塊 前面加了標號的無名塊 3 子程式 包括儲存在資料庫中的儲存過程,函式和包.這些塊一旦被定義後,...
PL SQL程式設計基礎 PL SQL簡介
課程教師 李興華 課程學習者 陽光羅諾 日期 2018 07 28 知識點 1 了解pl sql的主要特點 2 掌握pl sql塊的基本結構 pl sql語法結構 語法 declare 宣告部分,例如。定義變數 常量 游標。begin 程式編寫 sql語句 exeception 處理異常 end 說...