要创建对象类型的实例,您必须先声明对象类型的变量,然后对该声明的对象变量进行初始化。
声明对象变量的语法如下:
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-O数据库中,可使用以下备选语法代替构造函数方法。
[ ROW ] ({ expr1 | NULL } [, { expr2 | NULL } ] [, ...])
如果在带圆括号的逗号分隔列表中指定了两个或多个术语,则ROW为可选关键字。如果仅指定一个术语,则必须指定ROW关键字。