如何从基于对象的表查询中返回对象



我有一个基于对象a_obj的表:

CREATE TYPE a_obj IS OBJECT (
a1 INTEGER,
a2 integer
);
CREATE TABLE a OF a_obj (
CONSTRAINT a__a1__pk PRIMARY KEY (a1)
);

有时我想选择a的列:

select a.* from a  -- it works

有时我想选择对象a_obj.

select a_obj(a.a1,a.a2) from a; --works

但是我不想重写所有列的名称,因为我可以有很多列要写,而且很容易忘记一个。

我试着这样做:

select a_obj(a.*) from a;

ORA-01747: invalid user.table。列,表。列或列规范

它不工作。

有办法吗?

也不行:

declare 
ret a_obj;
begin
select a.* into ret
from a;
end;

代码

使用OBJECT_VALUE伪列:

SELECT OBJECT_VALUE FROM a;

或者,如@padders所述,使用VALUE()函数:

SELECT VALUE(a_alias) FROM a a_alias;

需要引用表别名而不是表标识符

db<此处小提琴>

相关内容

  • 没有找到相关文章