gpt4 book ai didi

sql - 如何从 select 语句的结果集中插入到嵌套表中?

转载 作者:搜寻专家 更新时间:2023-10-30 20:14:10 25 4
gpt4 key购买 nike

我有两个相同类型的嵌套表,类型是:

CREATE OR REPLACE TYPE tipo_valor AS OBJECT (
ano DATE, --year
cantidad INTEGER --ammount of exported wine
) ;

CREATE OR REPLACE TYPE hist_export AS OBJECT (
nombre_pais VARCHAR2(100), --name of importer country
cantidad tipo_valor --type referenced above
);

嵌套表格:

CREATE OR REPLACE TYPE nt_hist_exp IS
TABLE OF hist_export;

我的两个表是:

CREATE TABLE bodega (  --winery
id_bod INTEGER NOT NULL,
exp_an_bod nt_hist_exp ,
)

CREATE TABLE marca ( --wine
id_marca INTEGER NOT NULL,
exp_an_marca nt_hist_exp
)

我有一个带有选择语句的程序,该语句从某一年的酒 table 上收集导出金额并按国家/地区排序,

PROCEDURE exp_bod ( p_ano DATE,
p_bod_nom VARCHAR2)IS
sumatoria INTEGER;
p_idbod INTEGER;
BEGIN
SELECT id_bod INTO p_idbod
FROM bodega
WHERE nombre_bod = p_bod_nom;
DBMS_OUTPUT.PUT_LINE(to_char(p_idbod));
SELECT nt.nombre_pais,sum(nt.cantidad.cantidad)
INTO sumatoria
FROM bodega b
JOIN presentacion p on p.bodega_fk = b.id_bod
JOIN marca m on m.id_marca = p.marca_fk
CROSS JOIN TABLE(m.exp_an_marca) nt
WHERE b.id_bod = p_idbod
AND nt.cantidad.ano = p_ano
group by nt.nombre_pais
order by nt.nombre_pais;
);

end exp_bod;

此过程中的第二个选择成功返回了我需要的结果集,它是一个包含两列的结果集,一个是国家名称,第二个是导出金额,所有这些都汇总并排序,我想要的是插入行该结果集到酒厂表中的嵌套表中,包括由函数作为参数接收的年份

最佳答案

您可以使用insert as select,创建您的对象类型的实例作为查询的一部分:

INSERT INTO TABLE (SELECT exp_an_bod FROM bodega b WHERE b.nombre_bod = p_bod_nom)
SELECT hist_export(nt.nombre_pais, tipo_valor(nt.cantidad.ano, sum(nt.cantidad.cantidad)))
FROM bodega b
JOIN presentacion p on p.bodega_fk = b.id_bod
JOIN marca m on m.id_marca = p.marca_fk
CROSS JOIN TABLE(m.exp_an_marca) nt
WHERE b.nombre_bod = p_bod_nom
AND nt.cantidad.ano = p_ano
GROUP BY nt.nombre_pais, nt.cantidad.ano;

我假设 nombre_bodbodega 上的一个列,尽管您没有在表定义中显示它,这意味着您真的不需要一个单独的列查找那个。

这还假设 exp_an_bod 不为空;它可以是空的。它也没有为该国家/地区的现有行留出任何余地,但是从您的数据模型来看,它是否可以存在或者如果存在应该发生什么情况并不是很清楚。不过,您可以使用相同的机制更新现有条目,只要您可以识别它即可。

关于sql - 如何从 select 语句的结果集中插入到嵌套表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53854105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com