型コンストラクタ式は、コンストラクタメソッドの呼び出しを指定します。型コンストラクタのパラメータは任意の式にすることができます。関数を呼び出す場所ならどこでも型コンストラクタを呼び出すことができます。
型コンストラクタ式の構文
[ schema. ]type_name
([ expr [, expr ]... ])
type_name がオブジェクト型の場合、式は順序付きリストである必要があります。つまり、最初のパラメータの型がオブジェクト型の最初のプロパティと一致し、2番目のパラメータの型がオブジェクト型の2番目のプロパティと一致する、という具合に続きます。コンストラクタのパラメータの総数は、オブジェクト型のプロパティの総数と一致している必要があります。
type_name が配列またはネストされたテーブル型の場合、式のリストには0個以上のパラメータを含めることができます。パラメータが0個の場合、空の集合を構築します。それ以外の場合、各パラメータは要素値に対応し、その型は集合内の要素の型です。
使用上の制限
SQLから型コンストラクタメソッドを呼び出す際、指定されるパラメータ(expr)の数は、オブジェクト型が999個を超えるプロパティを持っていても999個を超えてはなりません。
例
CREATE TYPE cust_addr_typ
AS OBJECT
(street_address VARCHAR2(40),
postal_code VARCHAR2(10),
city VARCHAR2(30),
state_province VARCHAR2(10),
country_id CHAR(2));
/
CREATE TABLE customers
(customer_id NUMBER(6),
cust_first_name VARCHAR2(20) CONSTRAINT cust_fname_nn NOT NULL,
cust_last_name VARCHAR2(20) CONSTRAINT cust_lname_nn NOT NULL,
cust_address VARCHAR2(50),
cust_phoneno VARCHAR2(20)
);
CREATE TYPE address_book AS TABLE OF cust_addr_typ;/
DECLARE
myaddr cust_addr_typ := cust_addr_typ(
'500 Oracle Parkway', 94065, 'Redwood Shores', 'CA','USA');
alladdr address_book := address_book();
BEGIN
INSERT INTO customers VALUES (
666999, 'Joe', 'Smith', myaddr, NULL);
END;
/