如何在SQL存储过程中处理错误
来源: 作者: 出处:综艺读书 2007-07-22如何在SQL存储过程中处理错误
下面将如何在存储过程中判断SQL语句的错误,向大家作一个详细地介绍, 希望大家让程序开发人员遵从这样的方式编写SQL存储过程,以避免造成在程序联调过程中应用程序状态不明确的问题。
|
|
|||
如果需要忽略NOT FOUND, 可以DECLARE CONTINUE HANDLER FOR NOT FOUND, 如果需要并且可以将returnCode设置为零,以便于在程序体内判断returnCode的时候可以忽略这个NOT FOUND;
可以定义DECLARE EXIT HANDLER FOR SQLEXCEPTION, 当出现SQL错误的时候,中断程序执行过程,跳出存储过程,也可以定义DECLARE CONTINUE HANDLER FOR SQLEXCEPTION, 同时判断SQLCODE的值,用以忽略你希望忽略的error code, 在程式的最后列出了这种使用方式:
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;
......
对于SQLEXCEPTION也可以这样定义,用来忽略一些特定的error code, 但是要在程序体内判断returnCode的数值:
-- in case of SQL error
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
IF (SQLCODE = -454) THEN
SET returnCode = 0;
-- 创建的数据库对象已经存在或者插入的记录在唯一键值上重复
ELSE
SET returnCode = SQLCODE;
SET returnMsg = errorLabel;
END IF;
END;
......
IF (returnCode = 0) THEN
......
END IF;
IF (returnCode = 0) THEN
...
END IF;
END
--存储过程结束
相关图文阅读
频道图文推荐
相关专题
最新技术文档
·如何在SQL存储过程中处理错误 07-22
·一个SQL存储过程 07-17
·微软Excel用ODBC轻松获得DB2数据 05-11
·如何综合掌握 DB2 和 Informix 04-09
·用 AWK 实现 DB2 数据库 Schema 的同步 04-09
·关于IBM数据库DB2 9的九大特性简介 04-07
·DB2数据库应用系统性能优化深入探究 04-07
·DB2 9之优劣分析 04-04
·如何读取Excel数据并导入DB2数据库 03-29
·在Redhat Linux9上手动安装DB2 03-26
·一个SQL存储过程 07-17
·微软Excel用ODBC轻松获得DB2数据 05-11
·如何综合掌握 DB2 和 Informix 04-09
·用 AWK 实现 DB2 数据库 Schema 的同步 04-09
·关于IBM数据库DB2 9的九大特性简介 04-07
·DB2数据库应用系统性能优化深入探究 04-07
·DB2 9之优劣分析 04-04
·如何读取Excel数据并导入DB2数据库 03-29
·在Redhat Linux9上手动安装DB2 03-26
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容




