嵌入式SQL异常处理:WHENEVER语句详解

需积分: 9 1 下载量 22 浏览量 更新于2024-10-21 收藏 32KB DOC 举报
"嵌入式SQL默认分类" 嵌入式SQL是将SQL语句嵌入到主语言(如C、COBOL等)程序中,使得应用程序能够直接操作数据库的一种方式。这种技术允许程序员在高级语言中混合使用SQL语句,以实现更灵活的数据访问和处理。在使用嵌入式SQL时,往往需要对错误和异常进行处理,以确保程序的健壮性。 在嵌入式SQL中,WHENEVER语句是用于设置错误、警告和找不到记录时的默认行为的关键构造。WHENEVER语句不是实际执行的SQL语句,而是预编译阶段的指示,它告诉预编译器如何在遇到不同类型的异常时自动插入错误处理代码。 1. WHENEVER SQLERROR action:这个语句用于指定当SQL语句执行时发生错误(SQLCODE小于0)时的行为。action部分包含处理错误的代码,例如跳转到错误处理程序或调用特定函数。 2. WHENEVER SQLWARNING action:当SQL语句执行时产生警告(SQLCODE等于1)时,执行action中的代码。警告通常是非致命的,但可能会影响结果的正确性。 3. WHENEVER NOTFOUND action:如果SQL查询未找到匹配的记录(SQLCODE等于100),则执行action中的代码。这通常发生在SELECT、FETCH或DECLARE CURSOR等操作中未找到预期数据时。 WHENEVER语句可以配合以下三种操作: - WHENEVER ... GOTO stmt_label:预编译程序会生成一个跳转语句,使得程序执行转移到指定的标签(stmt_label)位置。 - WHENEVER ... CONTINUE:程序控制流将继续到下一个主语言语句,不会中断当前流程。 - WHENEVER ... CALL function():预编译程序将调用指定的函数来处理异常情况。 示例中展示了WHENEVER语句的实际应用。在这些例子中,当SQL DELETE语句遇到错误时,程序会跳转到errormessage1标签,打印错误信息并退出程序;而当UPDATE语句遇到错误时,它会继续执行,不会中断;最后,如果另一个删除语句失败,程序会跳转到errormessage2标签进行处理。 通过WHENEVER语句,开发者可以有效地组织和管理嵌入式SQL的错误处理逻辑,提高代码的可读性和维护性,同时确保程序在遇到异常时能够优雅地恢复或终止。
2010-01-15 上传
第六章 嵌入式SQL(E-SQL)简介 3 第一节 什么是嵌入SQL语言? 3 1.1 嵌入SQL程序的组成元素 3 1.2 什么是静态SQL和动态SQL? 4 1.3 什么是SQLCA? 4 1.4 什么是SQLDA? 5 第二节 SYBASE SQL SERVER嵌入式SQL语言 5 2.1 一个嵌入SQL语言的简单例子 5 2.2 嵌入SQL的处理过程 6 2.3 嵌入SQL语句总览 7 2.3.1 宿主变量 7 2.3.2 连接数据库 12 2.3.3 数据的查询和修改 13 2.3.4 游标的使用 13 2.3.5 SQLCA 15 2.3.6 WHENEVER 16 2.3.7 批处理 18 2.3.8 事务 18 2.4动态SQL语句 18 2.4 .1 动态修改 19 2.4.2 动态游标 20 2.4.3 SQLDA 23 2.4.4 DESCRIBE语句 27 2.5 两个例子程序 27 2.5.1 TELECOM程序 27 2.5.2 ADHOC程序 29 第三节 IBM DB2嵌入SQL语言 35 3.1 一个简单示例 35 3.2 嵌入SQL语句 37 3.2.1宿主变量 37 3.2.2单行查询 39 3.2.3多行查询 39 3.2.4插入、删除和修改操作 40 3.2.5 SQLCA 43 3.2.6事务 45 3.3 DB2的嵌入SQL程序处理过程 46 3.4 DB2的动态SQL嵌入语句 53 3.4.1 基本方法 53 3.4.2 动态游标 55 3.4.3 SQLDA 55 第四节 ORACLE数据库的嵌入SQL语言 66 4.1 基本的SQL语句 66 4.1.1宿主变量和指示符 66 4.1.2 查询 68 4.1.3 修改数据 68 4.1.4 游标 68 4.2 嵌入PL/SQL 71 4.3 动态SQL语句 72 4.3.1 ORACLE动态SQL语句的一些特点 72 4.3.2 使用动态SQL的四种方法 72 4.3.3 SQLDA 75 第五节INFORMIX的嵌入SQL/C语言 89 5.1 一个简单的入门例子 89 5.2 宿主变量 91 5.3 嵌入SQL的处理过程 96 5.4 动态SQL语言 96 5.4.1 SQLDA 97 第六节MICROSOFT SQL SERVER7嵌入式SQL语言 105 6.1 一个嵌入SQL语言的简单例子 105 6.2 嵌入SQL的处理过程 106 6.3 嵌入SQL语句 112 6.3.1 声明嵌入SQL语句中使用的C变量 112 6.3.2 连接数据库 115 6.3.3 数据的查询和修改 115 6.3.4 游标的使用 116 6.3.5 SQLCA 117 6.3.6 WHENEVER 118 6.4动态SQL语句 119 6.4 .1 动态修改 119 6.4.2 动态游标 120 6.4.3 SQLDA 122 6.4.4 DESCRIBE语句 130 6.5 API 130