oracle復合資料型別

2021-07-12 04:42:08 字數 3394 閱讀 1340

--type用於定於不確定的資料型別

declare

v_fd_change_left ekp_change.fd_change_left%type;   --v_id是表name的id的資料型別

v_fd_change_total ekp_change.fd_change_total%type;

begin

select fd_change_left,fd_change_total

into v_fd_change_left,v_fd_change_total   --只能返回一條資料

from ekp_change;

dbms_output.put_line(v_fd_change_left);

dbms_output.put_line(v_fd_change_total);

exception

when others then

dbms_output.put_line('錯誤');

end;

--rowtype

declare

r_name ekp_change%rowtype;  --定義r_name的資料是name表一行資料對應的資料型別;

begin

select fd_change_left,fd_change_total

into r_name.fd_change_left,r_name.fd_change_total   --只能返回一條資料

from ekp_change;

dbms_output.put_line(r_name.fd_change_left);

dbms_output.put_line(r_name.fd_change_total);

exception

when others then

dbms_output.put_line('錯誤');

end;

declare

r_ekp_change ekp_change%rowtype;  --定義r_name的資料是name表一行資料對應的資料型別;

begin

select *

into r_ekp_change  --這裡表示r_name.id,r_name.name,r_name.grade和name表的資料對應的型別是一致的

from ekp_change;

dbms_output.put_line(r_ekp_change.fd_id);

dbms_output.put_line(r_ekp_change.fd_change_left);

end;

--資料庫復合資料型別,陣列varray()

declare

type str is varray(5) of varchar(18);  --定義乙個長度為5的陣列str,每個元素為varchar(18);

strlist str:=str('i','am','xie','xing','xing');  --定義乙個srelist變數來引用str陣列的值;

begin

dbms_output.put_line(strlist(1));   --從1開始

dbms_output.put_line(strlist (2));

dbms_output.put_line(strlist (3));

dbms_output.put_line(strlist (4));

dbms_output.put_line(strlist (5));

end;

declare

type str is varray(5) of varchar(18);  --定義乙個長度為5的陣列str,每個元素為varchar(18);

strlist str:=str('','');  --定義乙個srelist變數來引用str陣列的值;

begin

select fd_change_left,fd_change_total

into strlist(1),strlist(2)

from ekp_change;

dbms_output.put_line(strlist(1));   --從1開始

dbms_output.put_line(strlist (2));

end;

--資料庫復合資料型別,陣列table

declare

type str_table is table of varchar(18) index by binary_integer;

strlist str_table;

begin

strlist(1):='hello';

strlist(2):='world'; --下標無下限

dbms_output.put_line(strlist(1)||strlist(2));

end;

declare

type str_table is table of ekp_change%rowtype index by binary_integer;

strlist str_table;

begin

select fd_id,fd_change_left,fd_change_total

into strlist(1).fd_id,strlist(1).fd_change_left,strlist(1).fd_change_total

from ekp_change;

dbms_output.put_line(strlist(1).fd_id||strlist(1).fd_change_left||strlist(1).fd_change_total);

end;

--資料庫復合資料型別,陣列record()

declare

type v_record is record(

fd_id varchar(32),

fd_change_left ekp_change.fd_change_left%type,

fd_change_total ekp_change.fd_change_total%type

);name_record v_record;

begin

select fd_id,fd_change_left,fd_change_total

into name_record.fd_id,name_record.fd_change_left,name_record.fd_change_total

from ekp_change;

dbms_output.put_line(name_record.fd_id);

dbms_output.put_line(name_record.fd_change_left);

dbms_output.put_line(name_record.fd_change_total);

end;

復合資料型別

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

復合資料型別

一 struct結構體 封裝資料 存放多種不同的資料型別 struct的宣告放在全域性區 1.宣告和定義 宣告 struct student struct student stu array 3 int i for i 0 i 3 i for i 0 i 3 i include struct stu...

復合資料型別

結構體 作用 封裝資料 把多種不同的資料型別放在一起 注意 一般放在全域性 分號不能省略。結構體變數用點訪問 結構體指標用 訪問 初始化 靜態初始化 動態初始化 使用注意事項 給結構體中的陣列成員賦值時,不能直接將字串賦給陣列名,可以使用strcpy函式 給結構體中的指標變數成員賦值時,要先給指標分...