1.预定义(Predefined)错误 常用的:没有结果:No_data_found 输出的行太多:Too_many_rows 2.非预定义(UnPredefined)错误 3.用户定义(User_define)错误 异常的格式: exception whenToo_many_rowsthendbms_output.put_line('输出的行数太多了'); 二:错误处理 1.预定义异常 [预定义异常]declarev_sal employees....
当select语句查询的结果没有数据的时候,就会抛出no_data_found异常,当结果中的数据有多条数据的时候,会抛出TOO_MANY_ROWS,如果存在异常,但不是前面两种异常就会抛出others异常。 异常是通过异常名称来捕获的。 当在exception段中定义了多个异常时,只会执行一个,之后跳出异常段 3、非预定义异常 在数据库中没有定义...
注意:预定义异常,首先是违背了 Oracle的规范,其次Oracle只为那20多个异常取了名字,如错误号"ORA-01043未找到数据"被命名为"NO_DATA_FOUND",这样在PLSQL中使用NO_DATA_FOUND来捕获处理就可以了。 示例: DECLARE V_ID NUMBER; BEGIN SELECT ID INTO v_id FROM es_user WHERE 1=0; DBMS_OUTPUT.put_line(v_...
则会发生NO DATA NEEDID的例外(NO DATA FOUND例外))。 程序中又没有处理这个例外,也就是说如果在例外处理部中未记述OTHERS处理程序或NO DATA NEEDID例外处理程序, 程序会以未处理例外的形式结束。 在这种情况下,表函数里边如果用UTL_FILE包等打开文件的话,就会以例外处理直接结束程序, ...
No_data_found (没有找到数据) Too_many_rows (select … into语句匹配多个行) Zero_Divide (被0除) Value_error (算术或转换错误) Timeeout_on_resource (在等待资源时发生超时) --系统例外:no_data_found Set serveroutput on Declare Pename emp.ename%type; ...
NO_DATA_FOUND---下标索引指向一个被删除的元素,或是关联数组中不存在的元素 SUBSCRIPT_BEYOND_COUNT---下标索引值超过集合中的元素个数 SUBSCRIPT_OUTSIDE_LIMIT---下标索引超过允许范围之外 VALUE_ERROR---下标索引值为空,或是不是指定的下标类型 5、关于数组的特有批量绑定ForAll ...
WHERE empno=9100; --不存在的员工编号,会返回NO_DATA_FOUND异常 DBMS_OUTPUT.PUT_LINE('ename is '||v_ename||'.'); DBMS_OUTPUT.PUT_LINE('salary is '||v_sal||'.'); EXCEPTION WHEN NO_DATA_FOUND THEN --无返回数据 DBMS_OUTPUT.PUT_LINE('data not found.'); ...
NO_DATA_FOUND:对应ORA-01403错误,如果没检索出数据,会触发。 TOO_MANY_ROWS:对应ORA-01422错误,当只需一行,但返回值多余一行时触发。 ZERO_DIVIDE:对应ORA 16、-01476错误,在被除数为0时触发。 VALUE_ERROR:对应ORA-06502错误,当在执行赋值语句时,如果变量长度不足以容纳实际数据,会触发。 OTHERS: 2、非预...
NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化的元素时 TOO_MANY_ROWS 执行 select into 时,结果集超过一行 ZERO_DIVIDE 除数为 0 --select into 取表中某一行数据做取值 --NO_DATA_FOUND 使用 select into 未返回行,或应用索引表未初始化的元素时 ...
NO_DATA_FOUNDORA-01403 SELECT INTO语句中没有返回任何记录。 TOO_MANY_ROWSORA-01422 SELECT INTO语句中返回多于1条记录。 ZERO_DIVIDEORA-01476 试图用0作为除数。 CURSOR_ALREADY_OPENORA-06511 试图打开一个已经打开的游标 同步数据 全量抽取:将目标表的数据全部删除,再将源系统的数据全部插入目标表。此方法保...