要創建對象類型的實例,您必須先聲明對象類型的變量,然后對該聲明的對象變量進行初始化。
聲明對象變量的語法如下:
object obj_type
object是分配給對象變量的標識符。
Obj_type是先前定義的對象類型的標識符。
聲明對象變量后,必須調用構造函數方法以便使用值來初始化對象。使用以下語法調用構造函數方法:
[NEW] obj_type ({expr1 | NULL} [, {expr2 | NULL} ] [, ...])
obj_type是對象類型的構造函數方法的標識符;構造函數方法與以前聲明的對象類型同名。
expr1, expr2, …是一組表達式,其類型分別與對象類型的第一個屬性、第二個屬性兼容,依此類推。如果屬性屬于某一對象類型,則相應的表達式可以為NULL、對象初始化表達式或返回該對象類型的任意表達式。
以下匿名塊聲明并初始化一個變量:
DECLARE
v_emp EMP_OBJ_TYPE;
BEGIN
v_emp := emp_obj_type (9001,'JONES',
addr_obj_type('123 MAIN STREET','EDISON','NJ',08817));
END;
該變量 (v_emp) 將使用先前定義的名為EMP_OBJ_TYPE的對象類型進行聲明。塊的主體使用emp_obj_type和addr_obj_type構造函數初始化該變量。
在塊的主體中創建對象的新實例時,可以包含NEW關鍵字。NEW關鍵字調用其特征與提供的參數相匹配的對象構造函數。
以下示例聲明兩個名為mgr和emp的變量。這兩個變量均屬于EMP_OBJ_TYPE。mgr對象在聲明中進行初始化,而emp對象在聲明中初始化為NULL并且在主體中分配有一個值。
DECLARE
mgr EMP_OBJ_TYPE := (9002,'SMITH', NULL);
emp EMP_OBJ_TYPE;
BEGIN
emp := NEW EMP_OBJ_TYPE (9003,'RAY', NULL);
END;
在PolarDB PostgreSQL版(兼容Oracle)數據庫中,可使用以下備選語法代替構造函數方法。
[ ROW ] ({ expr1 | NULL } [, { expr2 | NULL } ] [, ...])
如果在帶圓括號的逗號分隔列表中指定了兩個或多個術語,則ROW為可選關鍵字。如果僅指定一個術語,則必須指定ROW關鍵字。