一:基本介绍:plsql中的异常处理 异常(EXCEPTION)类型: 1.预定义(Predefined)错误 常用的:没有结果:No_data_found 输出的行太多:Too_many_rows 2.非预定义(UnPredefined)错误 3.用户定义(User_define)错误 异常的格式: exception whenToo_many_rowsthendbms_output.put_line('输出的行数太多了'); 二:错误处...
EXCEPTIONWHENtoo_many_rowsTHENDBMS_OUTPUT.put_line('无法将查询的多个值赋给变量');WHENno_data_foundTHENDBMS_OUTPUT.put_line('无法将空值付给变量');WHENOTHERSTHENDBMS_OUTPUT.put_line('其他异常');END; 如果查询语句返回多个结果,则会too_many_rows中的异常处理代码,如果没有值返回,则执行no_data_foun...
可在当前块或其外层块的 DECLARE 部分中定义用户定义的异常,也可在 PL/SQL 程序包的 DECLARE 部分中定义用户定义的异常。可在异常定义后面直接使用语法 PRAGMA EXCEPTION_INIT 或 PRAGMA DB2_EXCEPTION_INIT,从而指定与用户定义的异常对应的 sqlcode 或 sqlstate。 在以下示例中,DECLARE 部分包含三个指定异常的定义...
二.预定义异常 (1)NO_DATA_FOUND ---根据雇员编号获取雇员名 setserveroutputon;declarev_ename emp.ename%type;beginselectenameintov_enamefromempwhereempno=&no;dbms_output.put_line('v_name is :'||v_ename);exceptionwhenno_data_foundthendbms_output.put_line('empno is not exists.');end; 1. ...
NO_DATA_FOUNDSELECT...INTO...时,没有找到数据 DUL_VAL_ON_INDEX试图在一个有惟一性约束的列上存储重复值 CURSOR_ALREADY_OPEN试图打开一个已经打开的游标 TOO_MANY_ROWSSELECT...INTO...时,查询的结果是多值 ZERO_DIVIDE零被整除 2.非预定义异常 ...
在PL/SQL中,可以使用异常处理块来捕获和处理异常。异常处理块由BEGIN和END关键字包围,其中可以包含一段代码,用于处理特定的异常情况。在异常处理块中,可以使用EXCEPTION关键字来指定要捕获的异常类型,并使用WHEN子句来定义异常处理的逻辑。 对于返回的函数没有值这种情况,可以使用NO_DATA_FOUND异常来捕获并处理。NO_DAT...
declare empsal emp.sal%type;-- 自定义异常,异常类型必须是exceptionmydefiniExp exception;begin select sal into empsal from emp where empno=7934; if empsal <2000 then -- 抛出自定义异常raise mydefiniExp; end if; exception when no_data_found then dbms_output.put_line('no recordset...
EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('没有找到对应的数据。');WHEN TOO_MANY_...
(8)NO_DATA_FOUND :单行不返回任何行,或者程序引用了嵌套表中的已删除元素或关联数组(索引依据表)中的未初始化元素。 (9)PROGRAM_ERROR:PL/SQL有一个内部问题。 (10)ROWTYPE_MISMATCH :赋值语句中涉及的主机游标变量和 PL/SQL 游标变量具有不兼容的返回类型。
Exception是一种PL/SQL标识符,当运行的PL/SQL块出现错误或警告,则会触发异常处理。为了提高程序的健壮性,可以在PL/SQL块中引 入异常处理部分,进行捕捉异常,并根据异常出现的情况进行相应的处理。 一、异常的类型 ORACLE异常分为两种类型:系统异常、自定义异常。