【问题标题】:pl sql function select into variable in loop on a returning tablepl sql函数在返回表的循环中选择变量
【发布时间】:2013-07-22 20:30:06
【问题描述】:

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

然后我有一个如下的 Plsql 函数,这个错误出来了。我需要对返回的 empids 列表运行 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;
  /

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

【问题讨论】:

  • 说出您遇到的错误可能会有所帮助,不是吗?并显示您的类型声明。您是否收到编译或运行时错误? (它可能只是不喜欢select 周围的括号,我认为您的and 应该是where)。

标签: sql oracle select plsql


【解决方案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;

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      • 2014-08-05
      相关资源
      最近更新 更多