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;

但它不起作用。Oracle 说“对象”标识符无效。

当 nestedObjects 由对象组成时,它工作得很好,因为不需要处理引用。但是当它指向对象引用时它不起作用。我能应付吗?

感谢帮助!

4

1 回答 1

2

好的,我解决了:

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