萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> 全面探討PL/SQL的復合數據類型

全面探討PL/SQL的復合數據類型

PL/SQL有兩種復合數據結構:記錄和集合。記錄由不同的域組成,集合由不同的元素組成。在本文中我們將討論記錄和集合的類型、怎樣定義和使用記錄和集合。

PL/SQL記錄

記錄是PL/SQL的一種復合數據結構,scalar數據類型和其他數據類型只是簡單的在包一級進行預定義,但復合數據類型在使用前必須被定義,記錄之所以被稱為復合數據類型是因為他由域這種由數據元素的邏輯組所組成。域可以是scalar數據類型或其他記錄類型,它與c語言中的結構相似,記錄也可以看成表中的數據行,域則相當於表中的列,在表和虛擬表(視圖或查詢)中非常容易定義和使用,行或記錄中的每一列或域都可以被引用或單獨賦值,也可以通過一個單獨的語句引用記錄所有的域。在存儲過程或函數中記錄也可能有參數。

創建記錄

在PL/SQL中有兩種定義方式:顯式定義和隱式定義。一旦記錄被定義後,聲明或創建定義類型的記錄變量,然後才是使用該變量。隱式聲明是在基於表的結構或查詢上使用%TYPE屬性,隱式聲明是一個更強有力的工具,這是因為這種數據變量是動態創建的。

顯式定義記錄

顯式定義記錄是在PL/SQL程序塊中創建記錄變量之前在聲明部分定義。使用type命令定義記錄,然後在創建該記錄的變量。語法如下:

TYPE record_type IS RECORD (field_definition_list);

field_definition_list是由逗號分隔的列表。

域定義的語法如下:

field_name data_type_and_size [NOT NULL][{:=|DEFAULT} default_value]

域名必須服從與表或列的命名規則相同的命名規則。下面我們看一個例子:

DELCARE
TYPE stock_quote_rec IS RECORD
(symbol stock.symbol%TYPE
,bid NUMBER(10,4)
,ask NUMBER(10,4)
,volume NUMBER NOT NULL:=0
,exchange VARCHAR2(6) DEFAULT 'NASDAQ'
);
real_time_quote stock_quote_rec;
variable

域定義時的%TYPE屬性用於引用數據庫中的表或視圖的數據類型和大小,而在此之前程序不知道類型和大小。在上面的例子中記錄域在編譯時將被定義為與列SYMBOL相同的數據類型和大小,當代碼中要使用來自數據庫中的數據時,在變量或域定義中最好使用%TYPE來定義。

  • 共9頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved