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的相关功能
实时数据集成简介
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛