Oracle:在函数中返回多个值

Jam*_*ith 4 sql oracle plsql views function

我正在尝试使用两个表(员工和部门)从函数返回%rowtype中的多个值,但它不适用于我.

create or replace function get_employee
 (loc in number)
return mv_emp%rowtype
as  
   emp_record mv_emp%rowtype;
begin
   select a.first_name, a.last_name, b.department_name into emp_record 
   from employees a, departments b 
   where a.department_id=b.department_id and location_id=loc;

   return(emp_record);  
end;
Run Code Online (Sandbox Code Playgroud)

Gur*_*uru 8

编译上面的函数没有任何错误?是什么类型的MV_EMP?理想情况下,它应该是类似下面的东西.

create or replace type emp_type
(
first_name varchar2(20)
, last_name varchar2(20)
, depart_name varchar2(20)
)
/
create or replace function get_employee
 (loc in number)
return emp_type
as  
   emp_record emp_type;
begin
   select a.first_name, a.last_name, b.department_name into emp_record 
   from employees a, departments b 
   where a.department_id=b.department_id and location_id=loc;

   return(emp_record);  
end;
Run Code Online (Sandbox Code Playgroud)

  • 在我的oracle版本11g中,类型声明在这样指定时不会编译.我必须声明类型AS OBJECT (2认同)
  • 我也必须首先初始化对象,如下所示:`myobject mytype:= mytype('','');` (2认同)