加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – 迭代PL / SQL中的列

发布时间:2020-12-12 15:12:16 所属栏目:百科 来源:网络整理
导读:我有一个Emp Emp,Empname,薪水表Emp,我正在努力为每个员工做一个计算.但是我在尝试迭代每个emp来进行计算时遇到问题.我不能使用显式的游标. 所以现在我只是想创建empID列表: Declare aRows Number; eid emp_ID%TYPE;Begin Select Count(*) Into aRows from
我有一个Emp Emp,Empname,薪水表Emp,我正在努力为每个员工做一个计算.但是我在尝试迭代每个emp来进行计算时遇到问题.我不能使用显式的游标.

所以现在我只是想创建empID列表:

Declare
    aRows Number;
    eid emp_ID%TYPE;
Begin
    Select Count(*)
    Into aRows 
    from emp;

    Select emp_ID
    Into eid 
    From emp;

    FOR days IN 1..Tot_Rows
    Loop
        Dbms_Output.Put_Line(eid);
        eid := eid + 1;
    End Loop;
END;

但是我收到错误:
PLS-00320:此表达式的类型的声明不完整或格式错误

在PL / SQL中迭代表中的行的最简单的方法是执行类似的操作
BEGIN
  FOR employees IN (SELECT emp_id FROM emp)
  LOOP
    dbms_output.put_line( employees.emp_id );
  END LOOP;
END;

或者,您可以将所有EID值提取到PL / SQL集合中,并在该示例中迭代集合

DECLARE
  TYPE emp_id_tbl IS TABLE OF emp.emp_id%type;
  l_emp_ids emp_id_tbl ;
BEGIN
  SELECT emp_id
    BULK COLLECT INTO l_emp_ids 
    FROM emp;

  FOR i IN l_emp_ids .FIRST .. l_empnos.LAST
  LOOP
    dbms_output.put_line( l_emp_ids (i) );
  END LOOP;
END;

如果您的查询可以返回数千行,则将所有数据提取到集合中可能会使用比您想要的更多的PGA内存,并且您可能需要使用LIMIT子句来获取块中的行.但是,在这一点上,似乎已经超越了我们自己.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读