我有一个基于对象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<此处小提琴>此处小提琴>