pl sql函数在返回表的循环中选择变量

时间:2013-07-22 20:30:06

标签: sql oracle select plsql

我有一个类型对象如下 Emptable类型是empname,empid,rank

然后我有一个Plsql函数,如下所示,这个错误。我需要针对返回的empid列表运行sql select语句并将其加载到返回的列表中。以下代码保持错误..

create or replace function emp_details return emptable
  is
     l_result_col  emptable := emptable();
     n integer := 0;
     rxvalue number;
  begin
     for r in (select empname,empid from table)
     loop
        l_result_col.extend;
        n := n + 1;
        (select sum(xyz) into rxvalue from A inner join B on A.x=B.x and A.id=r.empid);
       l_result_col(n) := t_col(r.empname, r.empid,rxvalue);
     end loop;
     return l_result_col;
  end;
  /

任何帮助表示赞赏.. 谢谢!

2 个答案:

答案 0 :(得分:1)

为什么不在不涉及PL / SQL代码的情况下直截了当?

select t_col(r.empname, r.empid, sum(xyz))
bulk collect into l_result_col
from table r
left join (A join B on A.x = B.x) on A.id = r.empid
group by r.empname, r.empid;

答案 1 :(得分:0)

我认为您的选择不应该在括号中。在这种情况下,它不是一个子选择,而是一个单独的PL / SQL语句。