oracle存储过程异常怎么写begin
select into ......................;
exception
when errorException then
.................
when others then
..................
end;
oracle 用户自定义异常--设:要抛出的异常叫做ex_no_data,要判断是否小于0的变量为:v_data,则:
DECLARE
--声明异常
ex_no_data EXCEPTION;-- Exception to indicate an error condition
v_data NUMBER;-- Variable to hold data
--v_ErrorCode NUMBER;-- Variable to hold the error message code
--v_ErrorText VARCHAR2(200);-- Variable to hold the error message text
BEGIN
--抛出异常
IF v_data0 THEN --(括号内填抛出异常的条件)
RAISE ex_no_data;
END IF;
--捕捉异常
EXCEPTION
WHEN ex_no_dataTHEN
dbms_output.put_line(v_data);
--捕捉其他异常,并获得 捕获异常的内容
WHEN OTHERS THEN
null;
--v_ErrorCode := SQLCODE;
--v_ErrorText := SUBSTR(SQLERRM, 1, 200);
-- 注意这里用SUBSTR 来截取错误消息
--dbms_output.put_line(v_ErrorCode || '::'||v_ErrorText);
END;
/
---另可参考我之前的一个帖子:
如何处理用户自定义异常 oracle当与一个异常错误相关的错误出现时,就会隐含触发该异常错误 。用户定义的异常错误是通过显式使用 RAISE 语句来触发 。当引发一个异常错误时,控制就转向到 EXCEPTION块异常错误部分,执行错误处理代码 。
对于这类异常情况的处理 , 步骤如下:
1、在PL/SQL 块的定义部分定义异常情况:
异常情况EXCEPTION;
2、RAISE 异常情况;
3、在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理 。
例:更新指定员工工资,增加100;
DECLARE
v_empno employees.employee_id%TYPE :=empno;
no_resultEXCEPTION;
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_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 中的 exception when others then 捕获异常 在db2中怎么写db2中类似oracle的异常捕获写法:
举例如下:
CREATE PROCEDURE OUT_LANGUAGE (...,OUT returnCode INTEGER, OUT returnMsg CHAR(32))
-- returnCode 返回执行中的的错误代码
-- returnMsg 返回执行中的的错误描述
SPECIFIC SQL_OUT_LANGUAGE
LANGUAGE SQL
BEGIN
DECLARE SQLCODE INTEGER DEFAULT 0;
DECLARE SQLSTATE CHAR(5) DEFAULT ′00000′;
DECLARE errorLabel CHAR(32) DEFAULT ′′;
......
-- in case of no data found
DECLARE CONTINUE HANDLER FOR NOT FOUND
BEGIN
SET returnCode = SQLCODE;
-- 也可以设置为 SET returnCode = 0; 因为这个DECLARE是为了忽略NOT FOUND的执行结果
END;
-- in case of SQL error
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
SET returnCode = SQLCODE;
SET returnMsg = errorLabel;
END;
【oracle如何写异常 oracle异常怎么捕获】oracle如何写异常的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle异常怎么捕获、oracle如何写异常的信息别忘了在本站进行查找喔 。
推荐阅读
- 京东视频号直播怎么关闭,怎么关闭京东直播刷屏
- jquerya跳转页面跳转页面跳转页面,jquery实现页面切换
- 惠普怎么更改第一启动硬盘,惠普如何设置硬盘为第一启动项
- 广东计算机毕业设计,广东省计算机设计大赛作品
- 命令文件管理linux linux文件系统管理命令
- 苹果和安卓手机同步相册,苹果手机和安卓手机相册可以共享吗
- 招聘flutter,招聘官网
- mysql怎么测试数据 mysql测试数据库
- 关于erp系统没有登录按键的信息