`
king1065
  • 浏览: 4137 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

DB2 中游标的使用以及 存储过程的写法

阅读更多
问题1:
什么时候才会发生not found异常 ,以及db2中sqlcode的值是如何变化的?
在db2中,一条select 语句也有可能发生not found异常,譬如
declare sqlcode integer default 0;
declare sql_code integer default 0;
declare classCode varchar(40) ;
select app_class_code into classCode from kf_app_class where app_name='无效记录';
set sql_code=sqlcode;
如果此时没有检索到记录,那么sqlcode的值为100,有的话为0;
我们可以定义NOT FOUND 异常处理

declare sqlcode integer default 0;
declare sql_code integer default 0;
declare classCode varchar(40) ;
begin
declare continue handler for not found
begin
--注如果发生not found那么此时的sqlcode必定为100
set sql_code=sqlcode;/*在这里sqlcode的值为100;*/
--如果再次得到sqlcode的值那么它的值变为0
set sql_code=sqlcode;/*这里sqlcode变成了0,因为上一条语句执行成功了,那么sqlcode变成了0*/
end;
select app_class_code into classCode from kf_app_class where app_name='无效记录';
set sql_code=sqlcode;/*同理此时如果没有取到数据,那么会进declare continue handler ,返回后sqlcode的值也为0*/
end;
所以我们可以通过两种方法来捕获和处理not found
方法1:

begin
declare continue handler for not found
begin
--异常处理代码
end;
sql语句
end;
方法2:

begin

sql语句
if sqlcode=100 then
--异常处理代码
end if;
end;
问题2:
定义了游标,怎么fecth一条记录,怎么进行循环?
Q:定义了游标假设发生not found 异常,那么是在open cursorName的时候还是在fecth的时候发生异常?
A:检验游标中的数据是否取完或者有无记录,应该在fecth的时候,而不是发生在open cursorName的时候,
下面一个例子详细的说明了游标使用过程

begin
declare sqlcode integer default 0;
declare app_code varchar(10);
declare cursor1 cursor for select app_code from kf_app_class ;
open cursor1;
cursorLoop:
loop
fecth cursor1 into app_code ;
if sqlcode=100 then leave cursorLoop;
end if;
end loop;
end;

Q:sqlcode 可以直接用吗?
A:在db2中,如果要使用sqlcode那么必须在使用前declare;
譬如
declare sqlcode integer default 0;
if sqlcode =? then
end if;
附注
db2的其他异常处理

对应 oracle的 when other exceptions

declare exit handler for sqlwaring,sqlexcption
begin
--处理异常
end;

当程序执行exit handler异常处理后,那么会退出程序,不会在接着执行,也就是


declare exit handler for sqlwaring,sqlexcption
begin
--处理异常
end;
sql语句1;
sql语句2;
执行sql语句1发生异常,会进入 exit handler ,然后退出程序,不会在执行 sql语句2
分享到:
评论

相关推荐

    DB2 中游标的使用

    ### DB2中游标的使用详解 #### 一、引言 在金融行业,尤其是在银行等金融机构的业务系统中,DB2数据库系统因其高效稳定的性能而备受青睐。在处理复杂的后台数据逻辑时,游标(Cursor)是一种非常重要的工具。本文...

    DB2存储过程写法介绍

    DB2存储过程是一种预编译的SQL代码集合,它封装了复杂的数据库操作,可以在需要时被应用程序调用。存储过程的使用有多个显著优势。首先,它可以减少客户端和服务器之间的网络通信,因为处理过程在服务器端执行,减少...

    db2 存储过程语法与实例

    下面我们将详细探讨DB2存储过程的语法、创建、调用以及一些实用实例。 1. **存储过程的语法** 创建DB2存储过程的基本语法如下: ```sql CREATE PROCEDURE procedure_name (IN input_param1 datatype, INOUT ...

    db2look导出存储过程脚本

    通过以上介绍可以看出,无论是使用 `SYSCAT.ROUTINES` 表来获取存储过程定义,还是通过 `db2look` 或 `GETROUTINE` 命令来导出存储过程脚本,DB2 都提供了多种途径来满足不同的需求。在实际操作中,可以根据具体场景...

    DB2存储过程-基础教程

    综上所述,DB2存储过程的开发涉及了SQLPL编程的多个方面,包括变量声明和赋值、数据类型的使用、条件和迭代控制语句的应用、错误处理、以及结果集的处理。通过这些元素的组合使用,开发者可以构建强大的定制化业务...

    DB2工具-用于编写存储过程,导出数据

    DB2工具比较少,资料也很少,由于开发过程中用到,也试用了很多工具,开始使用dbeaver.exe工具,用于查询更新数据挺好,...最后发现SqlDbxPersonal挺好用,占用空间少,可以导出完整建表语句,与编写运行DB2存储过程

    DB2存储过程官方教程

    本文将详细探讨DB2存储过程的基础知识,包括变量的声明、基本语法,以及数组数据类型的使用,旨在帮助初学者快速掌握DB2存储过程的创建和使用。 在DB2存储过程中,变量声明是不可或缺的一环,它是对存储过程内使用...

    DB2数据库创建存储过程时遇到的错误

    在Unix平台下的DB2存储过程对于实例用户和受防护用户之间的关系有一个约束,即DB2实例用户必须同时是受防护用户的主组中的一个用户。如果实例用户未加入到受防护用户的主组中,将会引发存取权限不够的问题。 为了...

    db2存储过程开发

    ### DB2存储过程开发知识点详解 #### 一、DB2存储过程概述 DB2是IBM公司推出的一款关系型数据库管理系统,广泛应用于金融、电信等行业。存储过程是在数据库中存储的一组预编译的SQL语句和流程控制指令,用于执行...

    DB2存储过程语法大全

    本文将围绕“DB2存储过程语法大全”这一核心主题,深入探讨存储过程的概念、类型以及动态SQL语句的应用,旨在为数据库开发者提供全面而深入的知识点。 #### 一、存储过程概述 存储过程是一种在数据库中存储的预先...

    DB2 存储过程 教程

    DB2 存储过程 教程DB2 存储过程 教程DB2 存储过程 教程

    DB2编程基础要点 sql 存储过程

    总之,DB2编程基础要点包括存储过程的创建、临时表的使用、指定数量记录的选取、游标的管理和事务控制,以及模拟`DECODE`函数的操作。掌握这些要点有助于编写高效、可靠的DB2应用程序。在实际工作中,了解并熟练应用...

    DB2存储过程开发与优化

    DB2存储过程是数据库管理系统DB2中的一个重要特性,它允许开发者编写包含一组SQL语句、控制流语句和用户定义函数的程序单元,以便在数据库中执行复杂的逻辑操作。存储过程可以提高应用程序的性能,减少网络流量,...

    DB2存储过程介绍

    DB2存储过程是数据库管理系统DB2中的一个重要特性,它允许用户预先编写一组SQL语句和其他数据库操作,并将它们封装在一起,形成一个可重用的、逻辑上的单元。这个单元可以在需要的时候被调用,提高了代码的复用性和...

    DB2存储过程入门实例

    在本“DB2存储过程入门实例”文档中,我们将深入探讨DB2存储过程的基础知识,包括其定义、创建、调用以及优化等方面。 一、存储过程的概念 存储过程是由一组预编译的SQL语句组成的程序,存储在数据库服务器上,可由...

    DB2 SQL存储过程基础

    DB2 SQL存储过程基础 DB2 存储过程是指在 DB2 服务器端编写、执行的程序单元,可以实现业务逻辑、数据处理和事务控制等功能。存储过程是一种特殊的数据库对象,能够接受输入参数、执行复杂的业务逻辑、返回结果集等...

    DB2数据库存储过程入门

    通过以上步骤,你已经掌握了创建和使用DB2存储过程的基础知识。随着经验的增长,你将能够利用存储过程实现更复杂的功能,如事务处理、异常处理、自定义函数等,进一步提升数据库管理的效率和灵活性。

    DB2存储过程开发权威指南.存储过程学习速成教程

    1. **创建存储过程**:创建DB2存储过程通常涉及定义输入参数、输出参数、局部变量,以及一系列SQL语句。使用`CREATE PROCEDURE`语句来实现,指定存储过程的名称、参数列表、返回类型以及执行的SQL代码。 2. **调用...

    DB2存储过程培训200908

    DB2存储过程是数据库管理系统DB2中的一个重要特性,它允许用户编写包含一组SQL语句的程序,这些程序可以在需要时执行,以完成特定的数据处理任务。在“DB2存储过程培训200908”这份资料中,你将深入学习如何有效地...

    db2 存储过程实例

    调用DB2存储过程,使用CALL语句: ```sql CALL GET_MAX_EMPLOYEE_ID(@max_emp); ``` 在这里,@max_emp是一个变量,用于接收存储过程的输出结果。 四、存储过程的优点 1. 提高性能:存储过程在首次被调用时会被编译...

Global site tag (gtag.js) - Google Analytics