Oracle中异常怎么用 oracle数据库异常

Oracle未知异常问题,怎么解决

当与一个异常错误相关的错误出现时,就会隐含触发该异常错误。用户定义的异常错误是通过显式使用 RAISE 语句来触发。当引发一个异常错误时,控制就转向到 EXCEPTION块异常错误部分,执行错误处理代码。

创新互联专注于松滋企业网站建设,成都响应式网站建设公司,成都做商城网站。松滋网站建设公司,为松滋等地区提供建站服务。全流程按需策划,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

对于这类异常情况的处理,步骤如下:

1、在PL/SQL 块的定义部分定义异常情况:

异常情况  EXCEPTION;

2、RAISE 异常情况;

3、在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

例:更新指定员工工资,增加100;

DECLARE   v_empno employees.employee_id%TYPE :=empno;   no_result  EXCEPTION;BEGIN   UPDATE employees SET salary = salary+100 WHERE employee_id = v_empno;   IF SQL%NOTFOUND THEN      RAISE no_result;   END IF;EXCEPTION   WHEN no_result THEN       DBMS_OUTPUT.PUT_LINE('数据更新语句失败了!');   WHEN OTHERS THEN      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);END;

1、弹出错误框:

示例代码:

declare

v_count number;

begin

select count(*) into v_count from dept;

if v_count 10 then

raise_application_error(-20001,'数量小于10');

end if;

end;

执行结果:

2、控制台显示:

示例代码:

declare

v_count number;

my_exp exception;

begin

select count(*) into v_count from dept;

if v_count 10 then

raise my_exp;

end if;

exception

when my_exp then

dbms_output.put_line('数量小于10');

when others then

dbms_output.put_line('其他异常');

end;

执行结果:

PS:ORACLE 用户自定义异常小例子:

CREATE OR REPLACE PROCEDURE test_Exception_byLeejin

(

ParameterA IN varchar,

ParameterB IN varchar,

ErrorCode OUT varchar --返回值,错误编码

)

AS

/*以下是一些变量的定义*/

V NUMBER;

V nvarchar();

V NUMBER;

APP_EXP EXCEPTION; --自定义异常

BEGIN

ErrorCode :='';

IF (ParameterA=ParameterB) THEN

ErrorCode := 'ParameterA = ParameterB';

RAISE APP_EXP; -- 抛出异常

END IF;

EXCEPTION

WHEN APP_EXP THEN --在处理异常

RAISE_APPLICATION_ERROR(-,ErrorCode);

WHEN OTHERS THEN

RAISE_APPLICATION_ERROR(-,'未知异常');

END;

oracle出现异常如何继续执行

你的意思是, 要当发生异常 dbms_output.put_line('111er'); 以后, 循环继续执行?

create or replace procedure demo as

myex exception;

begin

begin

for i in 1 .. 10 loop

BEGIN

if i = 5 then

raise myex;

end if;

dbms_output.put_line(i);

exception

when others then

dbms_output.put_line('111er');

END;

end loop;

end;

end demo;

Oracle怎么捕获ora-00942的异常

不知道你想在什么环境下捕获,不知道你说的SQL是怎么捕获,或者你说的是脚本?

如果是在存储过程中捕获

有两个思路吧,

1、直接使用普通的异常处理,获取异常的代码,匹配是否为00942,然后就捕获到这个异常。

2、自定义异常处理,使用数据字典,首先查询数据字典中是否存在这表,如果不存在,就产生一个自定义的异常,在这个异常里你做处理。

------------------------------------------------------------------------------------

declare

myexception exception;

--表个数

v_num integer :=0;

begin

--查询表名为MY_USER表个数

SELECT count(*) into v_num FROM tabs WHERE table_name = 'MY_USER'

if v_num=0 then

raise myexception;

end if;

exception

when myexception then

raise_application_error(20001,'my exception happens');

when others then

raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);

end

----------------------------------------------------------------------------------------

伪代码,你可以嵌到你的存储过程中去使用。

oracle存储过程中异常怎么用?

第三行的declare删掉

那段select 有问题,最后的的条件,id=3改为sid=3;

正确的如下:

create or replace procedure ss as

s_id integer;

s_name varchar2(20);

s_age integer;

begin

begin

select sid, sname, sage

into s_id, s_name, s_age

from student

where sid = 3;

exception

when NO_DATA_FOUND then

insert into student values (3, 'zj', 22);

commit;

end;

end;


网站栏目:Oracle中异常怎么用 oracle数据库异常
分享URL:http://ybzwz.com/article/hppppp.html