作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这样的我的主表
create table final(
Province varchar2(50),
Country varchar2(100),
Latitude Number(10,0),
Longitude Number(10,0),
Cdate varchar2(20),
Confirmed int,
killed int,
Recover int
)
然后我用这样的嵌套表创建了表
create type virus_Statistic_t as object(
vDate varchar2(20),
infection int,
dead int,
recovered int
)
/
create type virus_Statistic_tlb as table of virus_Statistic_t
/
create type countries_t as object(
Province_or_State varchar2(50),
Country_or_Region varchar2(100),
Lat Number(10,0),
Longt Number(10,0),
virus virus_Statistic_tlb
)
/
create table countries of countries_t (
Lat not null,
Longt not null
) nested table virus store as virus_ntb;
现在我试图将所有列值从 final 传递到 countries 表。
这是我试过的
INSERT INTO countries(Province_or_State, Country_or_Region, Lat, Longt, vDate, infection, dead, recovered)
SELECT Province, Country, Latitude, Longitude, Cdate, Confirmed, killed, Recover
FROM final
/
它给出了这个错误
ERROR at line 1:
ORA-00904: "RECOVERED": invalid identifier
如何将所有值从 final 传递到 countries 表?
最佳答案
您需要使用类型构造函数。正确的语法是这样的:
INSERT INTO countries(Province_or_State, Country_or_Region, Lat, Longt, virus)
SELECT Province, Country, Latitude, Longitude,
virus_Statistic_tlb (virus_Statistic_t(Cdate, Confirmed, killed, Recover))
FROM final
/
请注意,这只是为每个国家/地区插入一个病毒行,这是您的意思吗?要为每个国家/地区插入多个病毒行,请执行以下操作:
INSERT INTO countries(Province_or_State, Country_or_Region, Lat, Longt, virus)
SELECT Province, Country, Latitude, Longitude,
CAST(MULTISET(SELECT virus_Statistic_t(Cdate, Confirmed, killed, Recover)
FROM final f2
WHERE f2.Province = f1.Province
AND ...etc.
) AS virus_Statistic_tlb
)
FROM final f1
GROUP BY Province, Country, Latitude, Longitude;
在回答有关使用嵌套表格的问题时,我永远不会不说正确的使用方法是根本不!在真实的数据库中,您应该有一个单独的数据库表用于 virus_statistics,并带有指向 countries 表的外键。我知道你这样做可能是出于教育目的,但你也应该知道,在现实生活中,任何人都不应该使用嵌套表格。毫无疑问,当您尝试使用这些数据时,您很快就会意识到原因:-)
关于oracle - 如何将值传递给对象列从一个表到另一个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60899254/
我是一名优秀的程序员,十分优秀!