Я хочу получить значения из вложенной таблицы в одной таблице и вставить указанные значения в другую таблицу
Вот тип для вложенной таблицы:
create or replace TYPE type_val AS OBJECT (
year DATE,
amount INTEGER
);
Вложенная таблица:
create or replace TYPE nt_type_val IS
TABLE OF type_val;
Вот таблица, которая содержит вложенную таблицу:
CREATE TABLE country (
id INTEGER NOT NULL,
name VARCHAR2(100) NOT NULL,
continent VARCHAR2(30) NOT NULL,
prod_an nt_type_val
)
NESTED TABLE prod_an STORE AS nt_prod_an;
Вот таблица, в которую я хочу вставить
CREATE TABLE prod_country_ai(
year DATE NOT NULL,
amount INTEGER NOT NULL,
country_fk INTEGER NOT NULL
)
Что я хочу сделать, этоЯ хочу получить значения из prod_an в таблице стран для каждой страны и сохранить их в таблице prod_country_ai соответственно год и сумму из вложенной таблицы (prod_an) в год и сумму в prod_country_ai и первичный ключ из страны в country_fk наprod_country_ai.
У меня есть следующий фрагмент для процедуры, которая сделает это:
DECLARE
CURSOR inner_table IS
SELECT t.* FROM country p, TABLE(p.prod_an) t
WHERE p.name = 'Portugal';
BEGIN
FOR i IN inner_table LOOP
dbms_output.put_line( i.year || i.quantity);
END LOOP;
END;
Это успешно выводит год, за которым следует сумма, но это происходит только после указания названия страныРешение, о котором я подумал, заключается в запуске «внешнего цикла», который циклически повторяется в таблице стран (может быть по идентификатору или по названию страны, но несильно измениться, потому что каждое значение будет уникальным в любом случае), и я предполагаю, что я могу использовать i.year и i.quantity непосредственно в операторе вставки внутри «внутреннего цикла» для вставки в prod_country_ai, но я не уверен, какЯ могу сделать это, также, я думаю, что переменные обрабатываются как «локальные» внутри цикла, так как я могу добавить вставку первичного ключа страны в качестве внешнего ключа в таблицу prod_country_ai?