当将值插入Oracle SQL中的对象表中时,您如何声明嵌套对象?
我正在尝试对象和嵌套表,以了解它们的工作方式。
我创建了三种对象类型 - 地址,属性和销售。地址嵌套在财产中,财产嵌套在销售中。然后,我创建了一张已销售的表 - 类型销售。
CREATE OR REPLACE TYPE ADDRESS AS OBJECT(
line_1 VARCHAR2 (10),
town VARCHAR2 (10),
postcode VARCHAR2(10)
);
CREATE OR REPLACE TYPE PROPERTY AS OBJECT(
location ADDRESS,
description VARCHAR2(10)
);
CREATE OR REPLACE TYPE SALE AS OBJECT(
house PROPERTY,
sale_price NUMBER
);
CREATE TABLE SOLD OF SALE;
但是,当我尝试使用下面的任何括号组插入值时,我会出现“缺少右括号或“太多值”的错误。
INSERT INTO SOLD VALUES ((('1 MY ROAD', 'MYTOWN', 'MY123'), 'DESCRIPTION'), 100000);
INSERT INTO SOLD VALUES (('1 MY ROAD', 'MYTOWN', 'MY123', 'DESCRIPTION'), 100000);
INSERT INTO SOLD VALUES ('1 MY ROAD', 'MYTOWN', 'MY123', 'DESCRIPTION', 100000);
在这种情况下,分组嵌套对象以避免错误的正确方法是什么?
I'm experimenting with objects and nested tables to get an understanding of how they work.
I have created three objects types - Address, Property, and Sale. Address is nested in Property, and Property is nested in Sale. I have then created a Sold table - of type Sale.
CREATE OR REPLACE TYPE ADDRESS AS OBJECT(
line_1 VARCHAR2 (10),
town VARCHAR2 (10),
postcode VARCHAR2(10)
);
CREATE OR REPLACE TYPE PROPERTY AS OBJECT(
location ADDRESS,
description VARCHAR2(10)
);
CREATE OR REPLACE TYPE SALE AS OBJECT(
house PROPERTY,
sale_price NUMBER
);
CREATE TABLE SOLD OF SALE;
However, when I try to insert values using any of the parenthesis groupings below, I get the error 'missing right parenthesis or' too many values'.
INSERT INTO SOLD VALUES ((('1 MY ROAD', 'MYTOWN', 'MY123'), 'DESCRIPTION'), 100000);
INSERT INTO SOLD VALUES (('1 MY ROAD', 'MYTOWN', 'MY123', 'DESCRIPTION'), 100000);
INSERT INTO SOLD VALUES ('1 MY ROAD', 'MYTOWN', 'MY123', 'DESCRIPTION', 100000);
In this context what is the correct way to group nested objects to avoid errors?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用对象构造函数:
或:
注意:
描述
是11个字符,因此它不会适合varchar2(10)
属性。 减小字符串的大小。要么增加属性的大小,要么 rdbms = oracle_18& fiddle = 839c6c8a72546e555b51dcb8ac336b0d2“ rel =“ nofollow noreferrer”>在这里
Use the object constructors:
or:
Note:
DESCRIPTION
is 11 characters so it will not fit into aVARCHAR2(10)
attribute. Either increase the size of the attribute or reduce the size of the string literal you are trying to put into the attribute.db<>fiddle here