Получение ошибки при заполнении вложенных коллекций с использованием CAST / MULTISET.
Создание объекта
--Employee Object
CREATE TYPE emp_o AS OBJECT (
employee_id NUMBER,
employee_name VARCHAR2(100),
salary NUMBER
);
--Employee table
CREATE TYPE emp_ot IS
TABLE OF emp_o;
--Department object
CREATE TYPE deps_o AS OBJECT (
department_id NUMBER,
department_name VARCHAR2(100),
emp_tab emp_ot
);
--department table
CREATE TYPE deps_t IS
TABLE OF deps_o;
Ниже приведен мой запрос, который я использую: в основном попытка заполнениятаблица deps_t за один раз.
DECLARE
l_message DEPS_T := DEPS_T(); --Initialize
BEGIN
SELECT CAST ( MULTISET (
SELECT d.department_id,
d.department_name,
CAST(MULTISET(
SELECT e.employee_id,
e.first_name ||' ' ||e.last_name,
e.salary
FROM hr.employees e
WHERE e.department_id = d.department_id ) AS EMP_OT)
) AS deps_t)
INTO l_message
FROM hr.departments d;
END;
Ошибка, которую я получаю:
ORA-06550: line 13, column 17:
PL/SQL: ORA-00923: FROM keyword not found where expected