一、復合資料型別
存放多個字段,建立後可以多次使用
二、分類
記錄 表 巢狀表 陣列
三、簡介
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...