2

1 つまたは複数のモジュールで教えることができるスタッフ オブジェクトを作成しています。モジュール テーブルへの参照を含むネストされたテーブルがあります。また、スタッフ メンバーが調整するモジュールを表示するために別のものを作成するつもりでした。ネストされた 2 つの異なるテーブルに名前を付ける方法はありますか。私は試してみました:

CREATE TYPE staff_typ UNDER person_typ(
staffID VARCHAR2(10),
universityEmail VARCHAR2(30),
office_ref REF office_typ,
coordintor_typ moduleProfile_typ,
teaches moduleProfile_typ)
NOT FINAL
/
CREATE TABLE staff_tab OF staff_typ;
NESTED TABLE teaches STORE AS lectures,
NESTED TABLE coordinator_typ STORE AS coordinates;

しかし、不明なステートメント エラーを含むスクリプトが表示されます。このインスタンスで 2 つの異なるネストされたテーブルを表示する方法の例を誰か教えてください。

4

1 に答える 1

1

このインスタンスで 2 つの異なるネストされたテーブルを表示する方法の例を誰か教えてください。

CREATE TYPE varchar_ot AS OBJECT (varchar_field VARCHAR2(40));
CREATE TYPE number_ot  AS OBJECT (number_field  NUMBER);

CREATE TYPE varchar_ntt AS TABLE OF varchar_ot;
CREATE TYPE number_ntt  AS TABLE OF number_ot;

CREATE TABLE collections
(
    col_id      NUMBER
,   col_varchar varchar_ntt
,   col_number  number_ntt
)
NESTED TABLE col_varchar STORE AS col_varchar_nt
NESTED TABLE col_number  STORE AS col_number_nt
;
-- table COLLECTIONS created.

INSERT INTO collections VALUES
(
    1
,   (varchar_ntt(varchar_ot('a'), varchar_ot('b')))
,   (number_ntt (number_ot(11),   number_ot(22)))
);
-- 1 rows inserted.

INSERT INTO collections VALUES
(
    2
,   (varchar_ntt(varchar_ot('c'), varchar_ot('d')))
,   (number_ntt (number_ot(33),   number_ot(44)))
);
-- 1 rows inserted.

SELECT  col_id, varchar_field, number_field
FROM    collections, TABLE(collections.col_varchar), TABLE(collections.col_number)
ORDER   BY
        3, 2, 1
;

COL_ID  VARCHAR_FIELD   NUMBER_FIELD
1       a               11
1       b               11
1       a               22
1       b               22
2       c               33
2       d               33
2       c               44
2       d               44

オブジェクトに 2 つのネストされたテーブルが含まれるオブジェクト型のテーブルを宣言する

CREATE TYPE a_varchar_ntt AS TABLE OF VARCHAR2(30);
CREATE TYPE a_number_ntt  AS TABLE OF NUMBER;

CREATE TYPE var_num_ot AS OBJECT
(
    col_var a_varchar_ntt
,   col_num a_number_ntt
);

TYPE var_num_ntt AS TABLE OF var_num_ot;
/*
Error report:
Unknown Command
*/

これが演習ではない場合、物事を複雑にしすぎて間違った方向に進んでいます。

于 2013-06-11T20:24:50.177 に答える