функция с параметром возвращает два значения - PullRequest
0 голосов
/ 11 мая 2018

Здравствуйте, переполнение стека. Я столкнулся с проблемой. Я пытаюсь создать функцию, для которой требуется параметр, который будет возвращать два значения, однако у меня возникла ошибка. PLS-00103: Обнаружен символ. Я не знаю, где происходит ошибка, если могуполучить помощь или совет, где я иду не так.

create or replace FUNCTION GET_LOCATIONcname (l_con_id_n in NUMBER)
RETURN NUMBER 
IS LOCATION VARCHAR2(30)  CST_NAME VARCHAR2(15);
BEGIN
SELECT LOCATION, CST_NAME INTO LOCATION FROM LDS_CONSULTANT WHERE CONSULTANT_ID = l_con_id;
RETURN l_con_id;
END;

1 Ответ

0 голосов
/ 11 мая 2018

Функции в 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;
...