DB2中通用的存储过程分页程序

文章作者 100test 发表时间 2007:09:11 12:28:17
来源 100Test.Com百考试题网


CREATE PROCEDURE SALES.DB2PAGINATION(IN ITBNAME VARCHAR(2000),-- 表名

IN ISHOWFIELD VARCHAR(1000),-- 显示字段

IN IJOIN VARCHAR(1000),-- 联接条件(如:内联、外联)

IN IWHERE VARCHAR(2000),-- 查询条件 (注意: 不要加 WHERE)

IN IORDER VARCHAR(100),-- 排序条件 (注意: 不要加 ORDER BY)

IN IPAGESIZE INTEGER,-- 页尺寸 如果为0 默认返回前一百万条数据可以认为是返回所有数据

INOUT IOCURRENTPAGEIX INTEGER,-- 输入和输出:当前页

OUT OPAGESTARTROW INTEGER,-- 输出:当前开始行

OUT OPAGEENDROW INTEGER,-- 输出:当前结束行

OUT OTOTALROWS INTEGER,-- 输出:当前总记录数

OUT OHASPREVIOUSPAGE INTEGER,-- 输出:是否有上一页

OUT OHASNEXTPAGE INTEGER,-- 输出:是否有下一页

OUT OTOTALPAGES INTEGER,-- 输出:总页数

OUT OERROR VARCHAR(100))-- 输出:错误信息

RESULT SETS 1

MODIFIES SQL DATA

NOT DETERMINISTIC

LANGUAGE SQL

BEGIN

  DECLARE STRSQL VARCHAR(6000).-- 主语句
  DECLARE result CURSOR WITH RETURN TO CALLER FOR S2.
  DECLARE exit handler FOR sqlexception-- 异常捕获
  BEGIN
  set OERROR = ’error!’.
  END.

  -- BODY start --
  if(iwhere <> ’’) then
  set iwhere = ’ where ’ || iwhere.
  end if.
  if(iorder <> ’’) then
  set iorder = ’order by ’ || iorder.
  end if.
  if(ijoin <> ’’) then
  set ijoin = ’ ’ || ijoin.
  end if.
 

  set strsql = ’0select count(*) from ’ || itbname || ijoin || iwhere.
  prepare s2 from strsql.
  open result.
   fetch result into ototalrows.-- 总记录数
   close result.

相关文章


DB2备份及恢复技术
DB2存储过程开发最佳实践
DB2数据库部分日常实用操作
DB2中通用的存储过程分页程序
实例解析:DB2中实现Oracle的相关功能
实时数据集成简介
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛