0

タイプがあります:

CREATE OR REPLACE TYPE something AS OBJECT(
   name VARCHAR2(100),
   nestedObjects objects
);

ここで、オブジェクトタイプは参照テーブルです

CREATE TYPE objects IS TABLE OF REF object;

オブジェクトは次のとおりです。

CREATE OR REPLACE TYPE object AS OBJECT (
   number NUMBER
);

次に、テーブルを作成します。

CREATE TABLE tab_something OF something
   NESTED TABLE nestedObjects STORE AS tab_nestedObjects;

そして、何かのテーブルに含まれるオブジェクトから番号を選択したいので、次を試します:

SELECT ts.name, cursor(
   select deref(object).number 
   from TABLE(ts.nestedObjects) object
) FROM tab_something ts;

また:

SELECT DEREF(object).number 
FROM tab_something ts, TABLE(ts.nestedObjects) object;

しかし、うまくいきません。オラクルは「オブジェクト」識別子が無効であると言います。

ネストされたオブジェクトがオブジェクトで構成されている場合、参照を処理する必要がないため、うまく機能します。しかし、オブジェクト参照を指している場合は機能しません。どうすれば対処できますか?

手伝ってくれてありがとう!

4

1 に答える 1

2

私は解決しました:

SELECT DEREF(VALUE(object)).number 
FROM tab_something ts, TABLE(ts.nestedObjects) object;
于 2013-11-12T21:36:12.800 に答える