要创建对象类型的实例,您必须先声明对象类型的变量,然后对该声明的对象变量进行初始化。声明对象变量的语法如下:

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兼容Oracle数据库中,可使用以下备选语法代替构造函数方法。

[ ROW ] ({ expr1 | NULL } [, { expr2 | NULL } ] [, ...])

如果在带圆括号的逗号分隔列表中指定了两个或多个术语,则 ROW 为可选关键字。如果仅指定一个术语,则必须指定 ROW 关键字。