我是使用Oracle 10g快速版的ORDBMS的新手,我必须获取对象表中每一行的对象标识符。我使用下面的例子。
CREATE TYPE person AS OBJECT(
name VARCHAR2(20)
);
CREATE TABLE person_table OF person;
INSERT INTO person_table VALUES ( person('Test') );
已成功创建类型person和表person_table。行被插入,我可以使用
SELECT * from person_table;
但是执行
SELECT REF(p) FROM person_table p;
给出以下错误:ORA-00932: inconsistent datatypes: expected NUMBER got REF SYS.PERSON
如何获取表中每一行的对象标识符?任何帮助将不胜感激。
2条答案
按热度按时间14ifxucb1#
我看到错误是指SYS.PERSON。是否以SYS用户的身份创建对象和表?如果是这样,请尝试将其创建为“普通”用户,而不是SYS用户。
3zwtqj6y2#
你可以简单地得到 OBJECT_ID 伪列,像这样把每个对象属性作为单独的列:
或者使用 VALUE() 函数将整行视为对象:
参见:https://docs.oracle.com/cd/B14117_01/server.101/b10759/pseudocolumns004.htm