在Oracle存储过程中的异常之后无法继续循环

时间:2017-02-05 09:12:01

标签: oracle stored-procedures plsql

我正在尝试从存储过程返回数字列表。发生异常时,我的存储过程会在for循环中停止。我已经添加了异常子句,并且控制正在异常子句中继续循环,但仍然没有运气。

异常发生时如何继续循环?感谢。

     CREATE OR REPLACE PROCEDURE getNumber(l_list IN CUSTOMLIST, l_output OUT NUMLIST) 
     IS
            n_num varchar2(5);
     BEGIN
            l_output := NUMLIST();

            FOR i IN l_list.FIRST .. l_list.LAST LOOP
                            l_output.EXTEND(l_list.LAST);
                      BEGIN      
                        SELECT NUM into n_num 
                            FROM sometable WHERE some condition;

                            l_output(i) := n_num;
                            EXCEPTION 
                            WHEN NO_DATA_FOUND THEN
                             DBMS_OUTPUT.PUT_LINE('TRUE');
                             CONTINUE;
                      END;
            END LOOP;
END;

2 个答案:

答案 0 :(得分:0)

也许你应该处理其他例外。 尝试添加

    WHEN OTHERS THEN
       [statements]

答案 1 :(得分:0)

当我重新启动SQL开发人员时,我发布的代码正在运行。当我复制粘贴EXCEPTION子句时,SQL开发人员级别出了点问题。但是当我输入EXCEPTION子句时,它开始显示为no_data_found选项,并且我选择了一个并且它有效。