create or replace procedure "DB2INST5"."fenbiao"(IN SR INT,
IN CF INT,
out JIEGUO INT)
LANGUAGE SQL
BEGIN
DECLARE V_XBM VARCHAR(20); --新建表名
DECLARE V_JBM VARCHAR(20); --原来表名
DECLARE V_BMHZ INTEGER DEFAULT 2013 ; --表名的后缀 例如-aaa_2016
DECLARE V_SQLC VARCHAR(1000);
DECLARE V_JG INTEGER DEFAULT 0;
DECLARE V_SQLS VARCHAR(1000);
DECLARE V_SQLI VARCHAR(1000);
DECLARE V_SQLD VARCHAR(1000);
DECLARE V_NF VARCHAR(20);
DECLARE C_CUR CURSOR FOR SELECT name FROM SYSIBM.SYSTABLES WHERE TYPE ='T' AND CARD > '1000000' AND NAME = 'HETL_JOB_LOG';--限制条件可以再加
DECLARE CONTINUE HANDLER FOR NOT FOUND SET JIEGUO = 1;
SET V_XBM = V_JBM||'_'||V_BMHZ;
SET CF = CF+1;
SELECT SUBSTR (TRIM(DAYID),1,4) INTO V_NF FROM HETL_JOB_LOG;
C1: BEGIN
SET V_SQLC = 'create table '|| V_XBM ||' as (select * from '||V_JBM || ') definition only';
PREPARE SC FROM V_SQLC;
OPEN C_CUR ;
FETCH_LOOP:LOOP
FETCH C_CUR INTO V_JBM;
IF CF = 1 THEN EXECUTE V_SQLC ;
ELSEIF CF >1 THEN LEAVE FETCH_LOOP;
ELSE SET v_jg =1;
END IF ;
END LOOP FETCH_LOOP;
I1: BEGIN
SET V_SQLI = 'insert into '||V_XBM ||'select * from'|| V_JBM|| ' WHERE '|| V_NF ||'=' ||V_BMHZ ;--限制条件可以再加
PREPARE SI FROM V_SQLI;
SET V_SQLS ='select count(*) from '||v_xbm ;
PREPARE SS FROM V_SQLS;
SET V_SQLD = 'DELETE FROM '||V_JBM ||'WHERE '|| V_NF ||'= '||V_BMHZ;--限制条件可以再加必须和 insert部分的限制条件相同。
PREPARE SD FROM V_SQLD;
CASE when CF > 1 THEN EXECUTE V_SQLI;
ELSE SET SR =1;
END CASE;
CASE WHEN CF >1 THEN EXECUTE V_SQLD ;
ELSE ROLLBACK;
END CASE;
END I1;
end C1;
COMMIT;
END;
每次运行的时候都返回警告:没有行受到影响,具体是什么原因我也不是很清楚希望有大神能帮帮忙看看
求大神指教,帮忙看看这个存储有什么问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
悬赏问题
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛
- ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
- ¥30 python代码,帮调试
- ¥15 #MATLAB仿真#车辆换道路径规划
- ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
- ¥15 数据可视化Python
- ¥15 要给毕业设计添加扫码登录的功能!!有偿
- ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
- ¥15 微信公众号自制会员卡没有收款渠道啊