免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3286 | 回复: 1
打印 上一主题 下一主题

DB2 求助 存储过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-20 14:44 |只看该作者 |倒序浏览
本帖最后由 aleiliuwei 于 2011-06-20 14:48 编辑

db2清除数据,保留N天记录的存储过程

我写了一个,但是我装的版本是9.7,银行用的是9.5,在9.5上不成功,9.7上可以。原因出在set exe_sql 这句上,请大虾们帮忙看看。以下是我写的存储过程。
里面用到的表:T129_drop_hisdata_config
  1. drop procedure P68_DELETE_HISDATA;
  2. create procedure P68_DELETE_HISDATA(IN A_INPUT_DT VARCHAR(10))
  3. BEGIN
  4.    declare procedureName varchar[code](128);
  5.    declare input_dt varchar(10);
  6.    declare temp varchar(10);
  7.    declare  exe_sql  varchar(1000);
  8.    declare drop_table_name varchar(64);
  9.    declare drop_table_schema varchar(10);
  10.    declare drop_data_column varchar(64);
  11.    declare drop_data_column_format int;
  12.    declare keep_days int default 30;
  13.    declare drop_where varchar(256);
  14.    declare drop_status int;
  15.    declare not_found condition for sqlstate '02000';
  16.    declare at_endc1 int default 0;
  17.    declare cursor1 cursor with return for select drop_table_name,drop_table_schema,drop_data_column,drop_data_column_format,keep_days,drop_where,drop_status,varchar(date(A_INPUT_DT) - keep_days day) temp from T129_drop_hisdata_config where drop_status = 1 ;
  18.         declare continue handler for not_found set at_endc1 = 1;
  19.         --打开游标
  20.         open cursor1;
  21.         --遍历cursor1
  22.         while(at_endc1 < 1) do
  23.         fetch cursor1 into drop_table_name,drop_table_schema,drop_data_column,drop_data_column_format,keep_days,drop_where,drop_status,temp;
  24.   if (at_endc1 < 1 and drop_data_column_format=10 ) then
  25.   set input_dt = temp;
  26.   elseif (at_endc1 < 1 and drop_data_column_format=8) then
  27.   set input_dt = SUBSTR(temp,1,4) ||''||SUBSTR(temp,6,2) ||''||SUBSTR(temp,9,2);  
  28. end if;
  29. set exe_sql = 'delete from ' ||drop_table_schema||'.'||drop_table_name|| ' '||drop_where || ' and '''||input_dt||''' >= '||drop_data_column;
  30. prepare  psql  from  exe_sql;
  31. execute  psql;
  32. end while;
  33. close cursor1;

  34. END;
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-06-22 09:51 |只看该作者
什么屁论坛
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP