哪个大哥能解释下这段db2过程的意思吗,一直用oracle现在要用db2上的过程不懂啥意思

hdy1989 2015-12-30 10:17:47
CREATE OR REPLACE PROCEDURE GET_MTRDATE_COUNT
(AORGID VARCHAR(30),APLATDATE CHARACTER(10))
RESULT SETS 1
------------------------------------------------------------------------
--根据机构编号及平台时间,获取未来N天内有多少到期数据
P1:BEGIN
DECLARE vOCODE VARCHAR(30); --分组代码
DECLARE vONAME VARCHAR(30); --分组名称
DECLARE vSQL VARCHAR(2000); --SQL脚本
DECLARE vCOUNT INTEGER; --数量
DECLARE vOTYPE INTEGER; --对象类型
DECLARE vMTRDATECOL VARCHAR(50); --到期日字段名
DECLARE vHASOTYPECOL INTEGER; --是否有OTYPE字段
DECLARE vAMTCOL VARCHAR(50); --剩余数量字段名
DECLARE vCODESLIST VARCHAR(1000); --需显示的字段
DECLARE t_cur CURSOR FOR t_stmt;

set vCount = 0;

DECLARE GLOBAL TEMPORARY TABLE SESSION.RESULT
(
OTYPE INTEGER, --对象类型
RCOUNT INTEGER, --数量
O_CODE VARCHAR(30), --分组代码
P_OCODE VARCHAR(30), --父代码
O_NAME VARCHAR(30) --分组名称
)
WITH REPLACE -- 如果存在此临时表,则替换
NOT LOGGED; -- 不在日志里纪录

select count(D_FLAG) into vCount
from TAUTHORIZE_DETAIL
where D_FLAG=0 and MTRINFO='1';
-- select * from TAUTHORIZE_DETAIL where D_FLAG=0 and MTRINFO='1';


P2:BEGIN

DECLARE cs cursor for --构建基于含基础交易对象的投后列表游标
select O_CODE,BUS_OTYPE,BUS_NAME,MTRDATECOL,CODESLIST,AMTCOL
from TAUTHORIZE_DETAIL
where D_FLAG=0 and MTRINFO='1' for read only;

--遍历需要做到期检查的数据
open cs;
BREAK1:
while vCount > 0 do
FETCH cs INTO vOCODE, vOTYPE, vONAME, vMTRDATECOL, vCODESLIST, vAMTCOL;

set vSQL = 'select count(*) as rcount from ttab_define';

--组织查询sql
PREPARE t_stmt FROM vSQL;
OPEN t_cur;
FETCH t_cur INTO vCount;
CLOSE t_cur;

set vCount = vCount - 1;
end while;
close cs;

-- DECLARE CUR_RES CURSOR WITH RETURN FOR
-- SELECT * FROM SESSION.RESULT for read only;
-- OPEN CUR_RES;
END P2;
END P1;
...全文
907 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧