Я хочу создать функцию (оракул 11g), которая будет возвращать несколько значений, но без необходимости создания нового ТИПА.Конечная цель намного сложнее, чем пример, который я привожу, но я могу сделать почти все остальное, кроме получения возвращаемых значений.
Вот очень упрощенная версия того, с чем у меня возникают проблемы.
например, учитывая следующую таблицу (сотрудники):
emplid | emplname | emplchildren
478 |SAM |"GEORGE,RON"
479 |JOSE |"RICHARD,JANE,RACHEL"
480 |PAM |"JORDAN"
Я хотел бы, чтобы следующее утверждение select CHILD_FN from employees
вернулось:
GEORGE
RON
RIRCHARD
JANE
RACHEL
JORDAN
Это упрощеночтобы показать ту часть, с которой у меня возникли проблемы Вот пример кода:
create or replace function CHILD_FN RETURN employee.emplname%TYPE IS
chldnames employee.emplname%TYPE;
CURSOR child_cur
IS
Select emplchildren FROM employees;
begin
/*do complicated parsing to separate each delimited
value of child_cur and assign
it to a new row in the names_col variable/
/*how do I add values to the names_col variable? I've tried
'chldnames.extend',
various types of 'bulk collect into chldnames'
and they all give various errors*/
return chldnames;
end LOCAL_TEST_FN;
мне нужно изменить тип возвращаемого значения или он не объявлен правильно?
Я не полностью противсоздали новый тип в базе данных, просто мы продвинулись очень далеко, не создавая нового типа, и чем менее сложным я могу сделать вещи, тем лучше.И если есть способ обойти это, я бы предпочел изучить этот путь и принять решение о том, что лучше.
Дайте мне знать, если мне нужно предоставить больше информации.