--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函式 給結構體中的指標變數成員賦值時,要先給指標分...