•復合組合變數也叫做組合變數,在復合變數中包括多個內部元件,每個元件都可以單獨存放值,
因此乙個復合變數可以存放多個值。
•復合變數型別不是資料庫中已經存在的資料型別,因此復合變數在宣告型別之前,首先要先建立復合型別,
復合型別建立後可以多次使用,以便定義多個復合變數。
復合資料型別包括:
-記錄
-表
-巢狀表
-陣列
記錄是由一組相關的資料項組成的邏輯單元,每乙個資料項都有自己的名字和資料型別。
表是資料的集合,可將表中的資料作為乙個整體進行引用和處理。
表由列和關鍵字組成,其中通過關鍵字可成組地訪問行。
一經定義,記錄和表都可重複使用。
pl/sql
記錄•記錄是儲存在多個欄位中的一組相關的資料項,每個欄位都有自己的名字和資料型別。
•把字段的集合當作乙個整體的邏輯單元
•主要用於從表中取出查詢到的行資料
記錄的特點:
• 每個記錄內都可以有許多字段。
• 可以為記錄賦初值,同時可用not null來限定記錄
• 無初始值的字段定義為null • 在定義欄位時也可以使用保留字default
• 可以在任意乙個塊、子程式或包的宣告部分定義record型別並宣告使用者自定義的記錄
• 可以宣告並引用巢狀的記錄,乙個記錄可以是其他記錄的元件
語法:
type type_name is record (field_declaration[, field_declaration]…);
其中field_declaration:
field_name [[not null] expr]
type emp_record_type is record (empno emp.empno%type, ename emp.ename%type, job varchar2(9)); emp_record emp_record_type ;
賦值可以使用點號引用記錄中的字段
record_name.field_name
%rowtype
屬性•宣告的變數對應於資料庫表或檢視中列的集合
•在%rowtype 之前加上資料庫表名
•記錄內字段的名字和資料型別參照表或檢視中的列
declare emp_record emp%rowtype; …. emp_record.ename=『ljs』; emp_record.sal=3000; select * into emp_record from emp where ……;
%rowtype的優點:
•可以不必知道資料庫中列的數量和型別。
•在執行期間,資料庫中列的數量和型別可能發生變化。
•在select語句中使用該屬性可以有效地檢索表中的行
建立
pl/sql
表
type type_name is table of [not null] [index by binary_integer]; identifier type_name;
declare type ename_table_type is table of emp.ename%type index by binary_integer; type hiredate_table_type is table of date index by binary_integer; ename_table ename_table_type; hiredate_table hiredate_table_type; begin ename_table(1) := 'cameron'; hiredate_table(8) := sysdate + 7; if ename_table.exists(1) then insert into ... ... 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函式 給結構體中的指標變數成員賦值時,要先給指標分...