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

声明对象变量的语法如下:

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关键字。