PL SQL 三 復合資料型別

2021-08-02 15:18:17 字數 2016 閱讀 2008

一、復合資料型別

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

二、分類

記錄 表 巢狀表 陣列

三、簡介

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):='ab';

tt(2):='bb';

tt(3):='cc';

tt(-1):='ss';

tt('-11'):='gk';

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

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

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

if(tt.exists(0)) then

dbms_output.put_line('存在');

else

dbms_output.put_line('不存在'); --

end if;

tt.delete(1,3); -- [1,3]

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

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

tt.delete(); --刪除所有

end;

2 %rowtype

declare

score_record t_score%rowtype;

begin

select * into score_record

from t_score where autoid = 10000000;

insert into test_gk values score_record;

end;

3 %rowtype + record

declare

type score_stu_rec is record(

score_row t_score%rowtype,

stu_row t_stu%rowtype

);rec score_stu_rec;

begin

select * into rec.score_row

from t_score ts

where ts.exam_score = (select max(exam_score) from t_score);

select * into rec.stu_row

from t_stu tstu

where tstu.stu_id = rec.score_row.stu_id;

dbms_output.put_line(rec.stu_row.stu_name);

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...