2024年4月23日发(作者:)
LINUX下定时执行含有DB2存储过程的SHELL脚本
最近项目要求将某些表中的数据转移到历史数据表中,并将成功转移后的
数据在生产系统中删除,并且要求每天凌晨1:00定时执行脚本。这是我第一次
写这样的脚本程序,现将整个编写过程或步骤记录如下,希望能对有类似需求的
人所有帮助,由于本人也是刚接触DB2数据库和shell脚本,错误之处还请见
谅。测试服务器的操作系统是Redhat,数据库产品:DB2(10.1版本),转移
数据是在DB2存储过程中实现的,下面分几个步骤进行叙述。
一、编写DB2存储过程
1》编写存储过程
具体代码见表格1,将其中的代码形成一个sql文件,文件名为
CREATE OR REPLACE PROCEDURE test_ndle(in t_Id INT)--in表示输入
参数
RESULT SETS 1 --返回结果为1个
LANGUAGE SQL
P1: BEGIN ATOMIC --ATOMIC为了使P1和END P1之间形成一个事务,要么同时成功,
要么同时失败
declare tIdINT; --声明变量
set tId=t_Id; --赋值变量
IF tId> 0 THEN --判断
insert into TEST__HISTORY(t_Id,t_name)
select t_Id,t_name
from TEST__ASM_FLTSCH where where t_Id=tId; --转移数据
delete from TEST__ASM_FLTSCH where t_Id=tId; --删除数据
END IF;
END P1
@ --@这里是必须的
表1
2》部署存储过程到指定数据库
a) 连接数据库
切换到数据库用户下执行命令:db2 connect to Dbname
或者不切换用户执行命令:db2 connect to Dbname user Username using ******
b) 部署1》中写好的存储过程
执行命令:db2 -td@ -vf
或者使用datastudio进行部署,具体流程如下:


发布评论