Я пытаюсь написать функцию plsql, которая принимает employee_list (список сотрудников) и имя сотрудника (тип varchar2) в качестве параметра, затем перебирает список сотрудников, пока не найдет сотрудника с соответствующим именем. Как только объект найден, функция возвращается с адресом сотрудника.
EMPLOYEE_OBJ Тип
CREATE OR REPLACE TYPE EMPLOYEE_OBJ AS OBJECT
(name varchar2(1000),
address varchar2(1000)
);
Тип EMPLOYEE_OBJ_ARRAY (массив EMPLOYEE_OBJ)
CREATE OR REPLACE TYPE EMPLOYEE_OBJ_ARRAY AS VARRAY(100) OF EMPLOYEE_OBJ;
Функция для получения значения объекта
create or replace FUNCTION GET_EMPLOYEE_ADDRESS (employee_list EMPLOYEE_OBJ_ARRAY,name varchar2)
RETURN VARCHAR2
IS
BEGIN
FOR i in 1 .. employee_list.count LOOP
IF employee_list(i).name = name THEN
return employee_list(i).address;
END IF;
END LOOP;
RETURN NULL;
END;
ОШИБКА, которую я получаю:
ORA-24344: success with compilation error
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190100", line 590
ORA-06512: at "SYS.DBMS_SYS_SQL", line 1658
ORA-06512: at "SYS.WWV_DBMS_SQL_APEX_190100", line 576
ORA-06512: at "APEX_190100.WWV_FLOW_DYNAMIC_EXEC", line 2033
Не могли бы вы помочь мне решить эту проблему.
Также есть ли более простой способ сделать это? как запрос на выбор.