【发布时间】:2018-04-19 10:14:09
【问题描述】:
我有 oracle 用户定义的类型和表,其中这些类型作为列。我正在尝试将简单数据插入到具有用户定义类型列的表中。但我得到无效的标识符错误。我找到了一种成功插入的方法。但我需要简单的方法。或者,也许我在开始创建表格时做错了什么。
CREATE OR REPLACE TYPE SCHEMA.A_TYPE as object
(
column1 varchar2(4),
column2 varchar2(5)
)
create table SCHEMA.TABLE1
(
recordid NUMBER,
typedata SCHEMA.A_TYPE
);
首先我尝试插入喜欢
insert schema.table1(recordid, typedata.column1, typedata.column2)
values (1, 'aaaa', 'bbbbb');
但我得到 typedata.column1、typedata.column2 列名的无效标识符。
然后我像这样插入
declare
v_type schema.a_type := new schema.a_type('aaaa', 'bbbbb');
begin
insert into scheme.table1(recordid, typedata)
values (1, v_type);
commit;
end;
但是对于较大的列大小的表来说这是一个问题。有什么办法可以解决这个问题吗?
【问题讨论】:
-
我不确定“较大列大小表的问题”是什么意思。您的第二个
insert声明是正确的。我不确定您在尝试增加尺寸时遇到了什么问题。 -
我的意思是类型可以有更多的列。当我从 db 导出数据时,它给了我插入脚本,就像我给出的第一个插入语句一样。我需要将其转换为第二个工作插入语句。这需要时间。实际上,我在表格中使用了不止一种类型。
-
听起来您在说真正的问题是您用于导出数据的任何方法都会生成不正确的
insert语句。您究竟是如何生成声明的?您使用的是 Oracle 工具吗?我的猜测是,您使用的任何工具/方法都不是为了支持表中的对象类型而构建的。 -
insert into table1 values (1, a_type('aaaa', 'bbbbb'));更简单。 -
感谢所有 cmets。 @JustinCave,我使用 PL/SQL 开发人员 v11.0.3。据我了解,它不支持对象类型表。我也有 Oracle SQL Developer v1.5.5,它支持表中的对象类型。它填补了账单:)。谢谢。
标签: oracle