例1: 批量 查詢部門號為 "10" 號的並把它們列印出來 .
declare
type emp_table_type is table of my_emp%rowtype index by binary_integer;
v_emp_table emp_table_type;
begin
select * bulk collect into v_emp_table from my_emp where deptno=&deptno;
for i in 1..v_emp_table.count loop
dbms_output.put_line('employee_info:'||v_emp_table(i).ename||
','||v_emp_table(i).job||
','||v_emp_table(i).hiredate);
end loop;
end;
說明部分:
1. declare 說明以下你要宣告的部分
2. type 宣告是型別 emp_table_typ e 型別的名字
3. is table of 指定是乙個集合的表的陣列型別, 簡單的來說就是乙個可以儲存一列多行的資料型別 , my_emp 指出在哪個表上( 存在的表 ) %rowtype指在表上的行的資料型別.
4. index by binary_integer 指索引組織型別
5. v_emp_table 定義乙個變數來儲存集合資料型別
6. bulk collect into 指是乙個成批聚合型別, 簡單的來說 , 它可以儲存乙個多行多列儲存型別 ,into 後面指定從**來 ,
7. v_emp_table.count 用來 v_emp_table 裡面的數量
8. (i)表示下標號
by pls_integer你可以用類似 string_index_by_number(1),也就用數字下標來訪問集合中的元素,例子:
declare
type number_index_by_string is table of number index by varchar2(30);
num_collection string_index_by_number;
begin
num_collection(1) := '北京';
dbms_output.put_line(num_collection(1)); --輸出為北京
end;
by varchar2(30) 你可以用類似 number_index_by_string ('name'),也就用數字下標來訪問集合中的元素.
例子: declare
type number_index_by_string is table of number index by varchar2(30);
num_collection number_index_by_string;
begin
num_collection('北京') := 1;
dbms_output.put_line(num_collection('北京')); --輸出為1
end;
oracle自定義型別
1 定義乙個型別 sql create or replace type propertyvalue as object number value number,string value varchar2 2000 date value date,member function getnumberva...
oracle 自定義型別
而如果沒有這句話 index by binary integer 那就得要顯示對初始化,且每插入乙個元素到numbers型別的table中時,都需要先extend.示例 沒加 index by binary integer 時 declare type my number arr is table ...
自定義型別
typedef型別 typedef 已有型別 新建型別 示例 typedef double area,volume typedef int number number i1 area a enum enum 列舉型別名 enum week 預設sun 0,可以比較 如果修改必須形如enum week...