PL SQL 三 復合資料型別

2021-06-20 05:48:41 字數 3026 閱讀 9856

一、復合資料型別

存放多個字段,建立後可以多次使用

二、分類

記錄 表 巢狀表 陣列

三、簡介

1、記錄

儲存一組多個欄位的相關資料項,是字段的集合,主要用於從表中取出查詢到的的行資料

特殊的記錄:%rowtype

宣告的表量對應資料庫表或檢視中列的集合,獲取的是單條資訊

優點:對應資料庫中列的數量和型別,並保持一致

2、表型別

1) 類似於陣列型別,由主鍵和列組成

2) 主鍵:binary_integer ,列:標量或記錄型別

3) 沒有長度限制,可以動態增長

4) 表方法:

exists(n):判斷pl/sql表中指定的元素是否存在,不能直接輸出

count : 返回乙個pl/sql表當前包含的元素的數量

first/last:返回第乙個或最後乙個索引數字

delete(n) :刪除第 n 個元素

delete(n,m) :刪除從n到m中的所有元素

四.示例

1.record

declare

type test_table is table of varchar(20) index by binary_integer;

tt test_table;

begin

tt(1):='a';

tt(2):='b';

tt(-1):='c';

dbms_output.put_line(tt.count); -- 3

dbms_output.put_line(tt.first); -- -1

dbms_output.put_line(tt.last); -- 2

if(tt.exists(0)) then

dbms_output.put_line('存在0下標');

else

dbms_output.put_line('不存在0下標');

end if;

tt.delete(1); --刪除下標為1 的值

tt.delete(1,3); --刪除下標在1到3所有的值

tt.delete(); --刪除全部值

end;

2.  %rowtype

--%rowtype

declare

emp_record emp%rowtype;

begin

select * into emp_record

from emp where empno = 7499; --選擇編號為7499的員工資訊

insert into test(empno,ename)

values(emp_record.empno,emp_record.ename); --只選取empno,ename兩欄位,插入text表中

end;

3.  %rowtype + record

-- %rowtype + record

declare

type emp_dept_rec is record(

emp_row emp%rowtype, --員工表

dept_row dept%rowtype -- 部門表

);edr emp_dept_rec;

begin

select * into edr.emp_row

from emp

where sal = (select max(sal) from emp ); --選中工資最高的員工資訊

select * into edr.dept_row

from dept

where deptno = edr.emp_row.deptno; --通過部門號,找到部門的所在資訊

dbms_output.put_line(edr.emp_row.empno); --員工表,empno欄位

dbms_output.put_line(edr.emp_row.ename); --員工表,ename欄位

dbms_output.put_line(edr.emp_row.deptno); --員工表,deptno欄位

dbms_output.put_line(edr.dept_row.deptno); --部門表,deptno欄位

dbms_output.put_line(edr.dept_row.dname); --部門表,dname欄位

end;

4. table 型別

--table 型別

declare

type test_table is table of varchar(20) index by binary_integer;

tt test_table;

begin

tt(1):='a';

tt(2):='b';

tt(-1):='c';

dbms_output.put_line(tt.count); -- 3

dbms_output.put_line(tt.first); -- -1

dbms_output.put_line(tt.last); -- 2

if(tt.exists(0)) then

dbms_output.put_line('存在0下標');

else

dbms_output.put_line('不存在0下標');

end if;

tt.delete(1); --刪除下標為1 的值

tt.delete(1,3); --刪除下標在1到3所有的值

tt.delete(); --刪除全部值

end;

PL SQL 三 復合資料型別

一 復合資料型別 存放多個字段,建立後可以多次使用 二 分類 記錄 表 巢狀表 陣列 三 簡介 1 記錄 儲存一組多個欄位的相關資料項,是字段的集合,主要用於從表中取出查詢到的的行資料 特殊的記錄 rowtype 宣告的表量對應資料庫表或檢視中列的集合,獲取的是單條資訊 優點 對應資料庫中列的數量和...

使用復合資料型別 PL SQL表

pl sql表也稱為索引表,它類似於高階語言的一維陣列。p sql記錄用於處理單行多列資料,而pl sql表用於處理多行單列資料。注意 高階語言陣列的元素個數是有限制的,而且下標不能為負 而pl sql表的元素個數沒有限制,而且下標可以為負 使用pl sql表處理單行單列資料 例子 根據雇員號輸出雇...

復合資料型別

復合資料型別 作用 封裝資料 多種不同型別資料存放在一起 應存放在全域性,在訪問結構體中的變數時,應用stu.id stu.name 初始化的方式 在對陣列進行初始化時 strcpy stu.name,zhangsan 在對指標進行初始化時 char name 對name進行初始化 stu.name...