oracle程序中的循环计数器案例

时间:2015-12-22 07:39:42

标签: oracle stored-procedures plsql oracle11g procedure

程序中是否有循环计数器。

如何处理以下案例。

 BEGIN
      FOR recAnnLang IN getLang(var_non_subscribe)

        LOOP

          // if loop 1 recAnnLangCode.Ann_Lang assign to var1 
          var1 := recAnnLangCode.Ann_Lang;
         // if loop 2 recAnnLangCode.Ann_Lang assign to var2 
          var2 := recAnnLangCode.Ann_Lang;
          // if loop 3 recAnnLangCode.Ann_Lang assign to var2 
          var3 := recAnnLangCode.Ann_Lang;

        END LOOP;
    EXCEPTION
         WHEN NO_DATA_FOUND THEN 
         dbms_output.put_line('Debug :: Inside Exception because data not found ' ); 
    END; 

3 个答案:

答案 0 :(得分:2)

DECLARE n_counter NUMBER := 0;
BEGIN
  LOOP
    n_counter := n_counter + 1;
    DBMS_OUTPUT.PUT_LINE(n_counter);
    IF n_counter = 5 THEN
      EXIT;
    END IF;
  END LOOP;
END;

我是这样做的。

答案 1 :(得分:0)

也许你正在寻找像

这样的东西
declare
  type a_type is table of recAnnLang.Ann_Lang%type index by pls_integer;
  val a_type;
begin
  for recAnnLang in getLang(var_non_subscribe) loop
    val(nvl(val.last, 0) + 1) := recAnnLang.Ann_Lang;
  end loop;

  for i in 1 .. val.last loop
    dbms_output.put_line(val(i));
  end loop;
end;

答案 2 :(得分:0)

也许,如果getlang是一个显式游标,你可以考虑在游标查询select子句中使用rownum并将其用作计数器。