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进行部署,具体流程如下: