タイプコンストラクタ式は、コンストラクタメソッドの呼び出しを指定します。タイプコンストラクタのパラメータは任意の式にすることができます。関数を呼び出す場所ならどこでも、タイプコンストラクタを呼び出すことができます。
タイプコンストラクタ式の構文
[ 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;
/