要創建對象類型的實例,您必須先聲明對象類型的變量,然后對該聲明的對象變量進行初始化。

聲明對象變量的語法如下:

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關鍵字。