Oracle中异常怎么用 oracle报错

oracle存储过程中异常怎么用?第三行的declare删掉
那段select 有问题,最后的的条件,id=3改为sid=3;
正确的如下:
create or replace procedure ss as
s_idinteger;
s_name varchar2(20);
s_ageinteger;
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怎么捕获ora-00942的异常不知道你想在什么环境下捕获,不知道你说Oracle中异常怎么用的SQL是怎么捕获 , 或者你说的是脚本Oracle中异常怎么用?
如果是在存储过程中捕获
有两个思路吧,
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'
ifv_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未知异常问题,怎么解决当与一个异常错误相关的错误出现时,就会隐含触发该异常错误 。用户定义的异常错误是通过显式使用 RAISE 语句来触发 。当引发一个异常错误时,控制就转向到 EXCEPTION块异常错误部分,执行错误处理代码 。
对于这类异常情况的处理,步骤如下:
1、在PL/SQL 块的定义部分定义异常情况:
异常情况EXCEPTION;
2、RAISE 异常情况;
3、在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理 。
例:更新指定员工工资,增加100;
DECLAREv_empno employees.employee_id%TYPE :=empno;no_resultEXCEPTION;BEGINUPDATE employees SET salary = salary 100 WHERE employee_id = v_empno;IF SQL%NOTFOUND THENRAISE no_result;END IF;EXCEPTIONWHEN no_result THENDBMS_OUTPUT.PUT_LINE('数据更新语句失败了!');WHEN OTHERS THENDBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);END;
1、弹出错误框:
示例代码:
declare
v_count number;
begin
select count(*) into v_count from dept;
if v_count10 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_count10 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中异常怎么用 oracle报错】Oracle中异常怎么用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle报错、Oracle中异常怎么用的信息别忘了在本站进行查找喔 。

    推荐阅读