Функции в Oracle PL / SQL могут возвращать только значение результата, однако это значение не обязательно должно быть внутренним / атомарным типом данных, это может быть сложный тип данных, такой как массив, запись или тип данных объекта .
create or replace TYPE My_Object_Type as OBJECT (
location varchar2(30),
cst_name varchar2(15)
;
create or replace FUNCTION GET_LOCATIONcname (l_con_id_n in NUMBER)
RETURN My_Object_Type
IS
My_Result My_Object_Type;
BEGIN
SELECT My_Object_Type(LOCATION, CST_NAME) INTO My_Result
FROM LDS_CONSULTANT
WHERE CONSULTANT_ID = l_con_id;
RETURN My_Result;
END;
Тогда вы можете использовать эту функцию примерно так:
declare
My_Result My_Object_Type;
begin
My_Result := GET_LOCATIONcname(1);
dbms_output.put_line(My_Result.location||' '||My_Result.cst_name);
end;