`
eminem
  • 浏览: 136798 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DB2纯SQL存储过程入门实践

    博客分类:
  • db2
阅读更多
DB2纯SQL存储过程入门实践


背景:本人现在在DB2 9.1做Birt应用,需用写纯SQL的存储过程,经过多层嵌套循环查询多个表,并返回一个最终的结果集(打开的游标)。然后再在birt中直接调用以下就获取了结果集的纪录,并展示在页面中。为此,我在网上搜索了很多资料,但是没有一个完整的可以执行的DB2存储过程。研究好久了,终于写出来了一个模板性的示例出来。现在拿出来,和各位网友共同分享交流。

示例说明:先创建一个临时表,并插入数据,然后查询临时表,返回游标。

create procedure testPrc()
-- 返回一个纪录
dynamic result sets 1
------------------------------------------------------------------------
-- sql 存储过程
------------------------------------------------------------------------
p1: begin
-- 定义一个全局临时表tmp_hy
declare global temporary table session.tmp_hy
    (
       dm varchar(10),
       mc varchar(10)       
    )
     with replace -- 如果存在此临时表,则替换
     not logged;  -- 不在日志里纪录
    -- 给临时表插入三条数据
    insert into session.tmp_hy values('1','1');
    insert into session.tmp_hy values('1','1');
    insert into session.tmp_hy values('1','1');
  
p2: begin  
-- 声明游标
declare cursor1 cursor with return for
  select * from session.tmp_hy; 
-- 游标对客户机应用程序保持打开
open cursor1;

end p2;
end p1

另:鉴于有人问到此例子怎么执行,我是在集成开发环境里执行的.运行存储过程的方法很多,可以存在高级编程语言里调用,也可以在命令行调用,也可以在sql开发工具里调用,没法一概而论,还有,这个游标,你要看到结果,需要逐条取出所有纪录.这些都是其它方面的知识,你可以去别的地方补充.我这里怎么运行的,以及怎么处理的,为了避免误导读者,我还是不说了.下面我给出我调用此存储过程得出的结果,如下图:
http://blog.51cto.com/attachment/200612/1166756483234.png


总结:这个例子很简单,但是很实用,可以作为一个存储过程的模板来用。完全操作的是临时表,你在任何db2数据库下都可以执行,并查看结果。为了保持例子的简洁易懂,我没有设置输入输出参数,这些参数和Oracle里,高级变成语言中函数的参数差不多,所以就写了这个不带参数的。

题外话:DB2 的存储过程和函数与Oracle的差别太大,DB2存储过程允许返回值,还可以设定返回值的数量,而Oracle的存储过程是不允许返回值的;DB2的函数也可以返回值,也可以返回表,而Oracle返回比较随意。用DB2做开发是件很痛苦的事情,原因是没有很好的开发工具,不像Oracle有 PL/SQL这样强大的开发工具可用,但是DB2的性能比Oracle的好,海量T级别的数据库尤为明显。目前我用的是Quest Central For DB2 4.3,功能很弱,连自动弹出表的列名功能都没有!DB2自带的开发中心更烂,没法用,shit!严重与IBM的品牌不相符合。不知道各位网友你们都在用什么开发工具呢?
分享到:
评论

相关推荐

    IBM_DB2通用数据库SQL入门

    3.7.1 存储过程应用的总体结构 48 3.7.2 存储过程应用的特点 49 3.7.3 激发存储过程 50 3.7.4 存储过程的执行 50 第四章 SQL语句 51 4.1 基本的SELECT语句 51 4.1.1 SELECT 的单表查询 52 4.2 SELECT 的...

    db2数据库入门教程(官方中文版)

    第 1章 – DB2 Express-C是什么?..........................................................................................13 1.1免费开发、部署和分发… 无限制!.............................................

    DB2 for IBM i: SQL Stored Procedures

    作为一份入门级的学习文档,可以帮助了解DB2存储过程的开发过程

    DB2资源文档

    1.DB2 SQL Reference 2.DB2 SQL 精粹 3. DB2存储过程 4.DB2数据库管理和配置参考 5.DB2通用SQL入门 6.DB2消息参考

    db2数据库入门官方教程(中文版)

    第 1章 – DB2 Express-C是什么?..........................................................................................13 1.1免费开发、部署和分发… 无限制!.............................................

    《DB2》大学课程课件

    《DB2》大学课程课件。第01章 DB2入门;第02章 SQL;第03章 DB2连通性;第04章 DB2数据存储;第05章 数据库对象;第06章 数据维护;第07章 数据库恢复;第08章 数据库安全。

    神通数据库-数据库快速入门.pdf

    库、Oracle、Microsoft SQL Server、IBM DB2、Microsoft Excel 97-2000、文本文件、其他支持 ODBC 的 数据源。在数据的转换过程中,向导能根据源数据和目标数据具体类型,通过内置的转换规则提供数据类型 的默认映射...

    SQL必知必会(第3版-PDF清晰版)part1

    推荐:学习SQL编程,必备书籍,从入门到进阶/精通,实例与理论同步,比较优秀作品!(共分压5部分)目录: 第1章 了解SQL... 1 1.1 数据库基础..... 1 1.1.1 什么是数据库..... 2 1.1.2 表..... 2 1.1.3 列和...

    DB2最新维护手册,从豆丁买来的。

    一、 DB2入门-数据库实例 4 二、 DB2日常维护日操作 12 1、 检查管理服务器是否启动 12 2、 检查DB2实例是否已经启动 12 3、 查看表空间状态是否正常 12 4、 查看表的状态 12 5、 查看磁盘空间 13 6、 检查存储管理...

    数据库学习入门数据库基础.docx

    数据库学习入门数据库基础 451 交大医附院 伤疤1个月 刀 激光 1300 数据库学习入门数据库基础入门 数据库学习入门数据库基础入门 ------------------- 数据库的作用: ------------------- 数据是数据库中存储的基本...

    《MySQL数据库入门》教学设计.docx

    最后向同学介绍几种常见的数据库产品,如:Oracle,SQL Server,DB2,MongoDB、SQL Server、MySQL以及他们各自的特点。 (4)如何安装和配置MySQL? 教师首先向学生演示如何在MySQL官网上,下载适用于Windows平台的...

    asp.net知识库

    常用sql存储过程集锦 存储过程中实现类似split功能(charindex) 通过查询系统表得到纵向的表结构 将数据库表中的数据生成Insert脚本的存储过程!!! 2分法-通用存储过程分页(top max模式)版本(性能相对之前的not in版本...

    Mycat高性能数据库中间件实战教程课件

    Mycat发展到目前,已经不是一个单纯的MySQL代理了,它的后端可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL等主流数据库,也支持MongoDB这种新型NoSQL方式的存储,未来还会支持更多类型的存储。

    obevo:Obevo是一个数据库部署工具,用于处理企业级架构和复杂性

    还是希望改善具有数百(或数千)个表,视图,存储过程和其他对象的古老系统的数据库部署? Obevo涵盖了您的用例。 支持的平台:DB2,H2,HSQLDB,Microsoft SQL Server,MongoDB,Oracle,PostgreSQL,Redshift...

    IBM WebSphere Portal门户开发笔记01

    8、查看DB2存储过程源代码的SQL 380 9、获取建表脚本 380 10、获取DB2数据库日志操作方法 380 二十一、LINUX相关 383 1、从命令模式切换到视图模式 383 二十二、TDS相关 383 1、LINUX下启动TDS管理界面 383 2、LINUX...

    citrus-db:通过JDBC进行关系DBMS仿真的数据库驱动程序和服务器

    通常,被测系统(SUT)使用JDBC驱动程序以连接到关系数据库,例如MySQL,Oracle,DB2或其他。 Citrus JDBC服务器能够模拟数据库服务器。 服务器接受连接和SQL查询(例如CREATE TABLE,SELECT,DELETE,UPDATE,...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以上用DB2数据库服务器。收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时...

    精通qt4编程(源代码)

    在逐渐掌握Qt 4的过程中,我们萌发了编写一本关于Qt 4的书来帮助初学者入门的想法。最终,在电子工业出版社博文视点资讯有限公司的大力支持下,我们的想法终于得以付诸实施。 \关于Qt \Qt是挪威的Trolltech公司的...

    精通Qt4编程(第二版)源代码

    在逐渐掌握Qt 4的过程中,我们萌发了编写一本关于Qt 4的书来帮助初学者入门的想法。最终,在电子工业出版社博文视点资讯有限公司的大力支持下,我们的想法终于得以付诸实施。 \关于Qt \Qt是挪威的Trolltech公司的...

Global site tag (gtag.js) - Google Analytics