【发布时间】:2017-08-30 03:23:22
【问题描述】:
我正在使用 Oracle DB,并且我有这种类型的子类型:
CREATE TYPE t_foo AS OBJECT
(id INTEGER)
NOT FINAL;
CREATE TYPE t_foo1 UNDER t_foo() NOT FINAL;
我有一个t_foo 类型的表,我还可以在其中存储t_foo 的子类型
CREATE TABLE foo OF t_foo;
INSERT INTO foo VALUES
(t_foo1(1));
现在我有一个表,其中有一列类型引用为t_foo1
CREATE TABLE bar(
myfoo1 REF t_foo1 SCOPE IS foo
);
如何从表foo 中插入t_foo1 的引用?
我试过了:
INSERT INTO bar VALUES
(select ref(f) from foo f where f.id = 1)
但它给了我一个类型错误(期望 ref t_foo1 但找到 t_foo)
我也尝试使用 TREAT 功能,但它不起作用(ORA-00904:标识符无效)。
INSERT INTO bar VALUES
(select ref(t_foo1) from foo f where t_foo1.id = 1 and TREAT(t_foo1 AS t_foo));
我怎样才能让这个插入工作?
【问题讨论】:
标签: sql oracle oracle11g ref subtype