交友约会| 杂志期刊| 小说| 论坛| 电影下载| 两性知识| 电脑知识| 汽车| 旅游| 收藏

如何在SQL存储过程中处理错误

来源: 作者: 出处:综艺读书 2007-07-22 
关 键 词:程序开发  db2  

如何在SQL存储过程中处理错误

下面将如何在存储过程中判断SQL语句的错误,向大家作一个详细地介绍, 希望大家让程序开发人员遵从这样的方式编写SQL存储过程,以避免造成在程序联调过程中应用程序状态不明确的问题。

如以下代码表示,在SQL存储过程中可以定义执行状态的出口参数,而且尽量返回系统报告的SQLCODE, 而并非个人定义的,这样可以更好地判断是什么样的错误, 也可以返回错误说明,有的开发人员不知何故,将返回码定义成79700,如果是参照DB2说明开发的,可能是误会了说明的含义,这个问题已经造成了联调过程中的误导判断和无法确定问题的原因,希望大家注意;

如果需要忽略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 存储过程  存储过程  服务器存储专栏专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
较早的文章:Windows下DB2分区实验

较新的文章:一个SQL存储过程
相关图文阅读
频道图文推荐
综艺读书宗旨
相关专题
·存储过程 (1694篇文章)
·数据库处理专题 (7265篇文章)
·网络存储—光纤通道 (1721篇文章)
·服务器存储专栏 (6208篇文章)
·sql 存储过程 (79篇文章)
热点标签: 程序开发  db2  
最新技术文档
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
百度推荐,商机无限
搜索您感兴趣的内容
Web 全站
综艺电脑频道编辑信箱  告诉我们您想看的专题或文章

友情互链 | 收藏本站 | 联系我们 | 在线留言 | 京ICP备08008424号|