Oracle–plsql複合資料型別

來源:互聯網
上載者:User

•複合組合變數也叫做組合變數,在複合變數中包括多個內部組件,每個組件都可以單獨存放值,
  因此一個複合變數可以存放多個值。 
•複合變數類型不是資料庫中已經存在的資料類型,因此複合變數在宣告類型之前,首先要先建立複合類型,

   複合類型建立後可以多次使用,以便定義多個複合變數。

複合資料型別包括:  

-記錄

-表

-巢狀表格

-數組

 記錄是由一組相關的資料項目組成的邏輯單元,每一個資料項目都有自己的名字和資料類型。
 
 表是資料的集合,可將表中的資料作為一個整體進行引用和處理。
 
 表由列和關鍵字組成,其中通過關鍵字可成組地訪問行。
 
 一經定義,記錄和表都可重複使用。
 

PL/SQL 記錄

•記錄是儲存在多個欄位中的一組相關的資料項目,每個欄位都有自己的名字和資料類型。 
•把欄位的集合當作一個整體的邏輯單元 
•主要用於從表中取出查詢到的行資料

記錄的特點: 

•  每個記錄內都可以有許多欄位。 
•  可以為記錄賦初值,同時可用NOT NULL來限定記錄 
•  無初始值的欄位定義為NULL •  在定義欄位時也可以使用保留字DEFAULT 
•  可以在任意一個塊、子程式或包的聲明部分定義RECORD類型並聲明使用者自訂的記錄 
•  可以聲明並引用嵌套的記錄,一個記錄可以是其他記錄的組件

文法:

TYPE type_name IS RECORD<br />(field_declaration[, field_declaration]…);


其中field_declaration:

field_name {field_type | variable%TYPE<br />| table.column%TYPE | table%ROWTYPE}<br />[[NOT NULL] {:= | DEFAULT} expr]
TYPE emp_record_type IS RECORD<br /> (empno emp.empno%type,<br /> ename emp.ename%type,<br /> job varchar2(9));<br />emp_record emp_record_type ;<br />
賦值可以使用點號引用記錄中的欄位

record_name.field_name 

%ROWTYPE
屬性

•聲明的變數對應於資料庫表或視圖中列的集合
•在%ROWTYPE 之前加上資料庫表名 
•記錄內欄位的名字和資料類型參照表或視圖中的列 

DECLARE<br /> emp_record emp%rowtype;<br /> ….<br /> emp_record.ename=‘ljs’;<br /> emp_record.sal=3000;<br /> SELECT * INTO emp_record<br /> FROM emp<br /> WHERE ……;
%ROWTYPE的優點:  

•可以不必知道資料庫中列的數量和類型。
•在運行期間,資料庫中列的數量和類型可能發生變化。 
•在SELECT語句中使用該屬性可以有效地檢索表中的行
                                                  


建立 PL/SQL

TYPE type_name IS TABLE OF<br /> {column_type | variable%TYPE<br /> | table.column%TYPE} [NOT NULL]<br /> [INDEX BY BINARY_INTEGER];<br />identifier type_name;
DECLARE<br /> TYPE ename_table_type IS TABLE OF emp.ename%TYPE<br /> INDEX BY BINARY_INTEGER;<br /> TYPE hiredate_table_type IS TABLE OF DATE<br /> INDEX BY BINARY_INTEGER;<br /> ename_table ename_table_type;<br /> hiredate_table hiredate_table_type;<br />BEGIN<br /> ename_table(1) := 'CAMERON';<br /> hiredate_table(8) := SYSDATE + 7;<br /> IF ename_table.EXISTS(1) THEN<br /> INSERT INTO ...<br /> ...<br />END;

表方法:




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.