Вставка данных в таблицу типов объектов из другой существующей таблицы. Oracle 11g

Я пытаюсь вставить данные в таблицу типов объектов из другой существующей таблицы в хранимой процедуре. Я создал тип «объект» и тип «таблица», как показано ниже.

CREATE OR REPLACE TYPE EXAMPLE AS OBJECT
(
ALL THE COLUMNS,
);
/
CREATE OR REPLACE TYPE EXAMPLE_TABLE AS TABLE OF EXAMPLE;

попытка использовать эту таблицу типов для вставки данных из другой таблицы.

---
BEGIN
INSERT INTO EXAMPLE_TABLE (ALL THE COLUMS FROM EXAMPLE) 
VALUES (SELECT * FROM EMP_TABLE);

Это возможно? дайте мне знать, или я должен использовать «КУРСОР» для вставки по одному.. пожалуйста, дайте мне знать, как этого добиться, в виде синтаксиса

--заранее спасибо


person meena    schedule 18.06.2018    source источник
comment
Определение emp_table было бы полезно, как и включение фактических полей/столбцов, которые вы используете вместо «всех столбцов».   -  person Alex Poole    schedule 18.06.2018


Ответы (1)


Пример таблицы — это тип, поэтому вы не можете ничего в него вставить, сначала вам нужно определить переменную, которая будет экземпляром вашей таблицы example_table. Затем вы можете использовать массовый сбор для фактического заполнения таблицы.

declare
  example_tab_inst EXAMPLE_TABLE;
begin
  select 
   EXAMPLE(e.col1,e.col2,e.col3) 
  bulk collect into example_tab_inst 
  from emp_table e;
 .
 .
 .
person Visionary Zen    schedule 20.06.2018
comment
о, круто... но как я могу поместить весь этот тип объекта в хранимую процедуру?? Я попытался создать тип объекта внутри хранимой процедуры, но не знаю, правильный ли это формат... не могли бы вы поместить эти шаги в хранимую процедуру и сообщить мне правильный формат??. благодарю вас.. - person meena; 25.06.2018
comment
Вы не можете определить объект внутри хранимой процедуры, вы можете использовать его только там. Ваш оператор создания типа создаст объект, после чего вы сможете использовать объект внутри своей хранимой процедуры, как я сделал выше. Подробнее см. здесь. - person Visionary Zen; 27.06.2018