Linux 执行DB2数据库导入存储过程/自定义函数脚本文件命令
2017-06-06 18:45
387 查看
导入存储过程/自定义函数: db2 -td@ -vf 文件名
其中,@是语句表示为结束符。
执行自定义函数脚本: db2 -td@ -vf holidayfunction.sql
文件内容:
CREATE FUNCTION getworkdate(in_date date,in_num INT)
RETURNS date
BEGIN
DECLARE re_num INT;
DECLARE re_i INT DEFAULT 0;
DECLARE re_count INT ;
DECLARE re_date date;
SET re_num =in_num;
IF in_num>0
THEN
WHILE in_num>0 DO
set re_i=re_i+1;
SET re_count=(SELECT count(*) FROM BANKHOLIDAY where HOLIDAYSTART<=(in_date+re_i days) AND HOLIDAYEND>=(in_date+re_i days) AND HOLIDAYSTATE='00');
IF re_count=0
THEN
IF DAYOFWEEK(in_date+re_i days)=1
THEN set re_num=re_num+1;
ELSEIF DAYOFWEEK(in_date+re_i days)=7
THEN set re_num=re_num+1;
ELSE set in_num=in_num-1;
END IF;
ELSE set re_num=re_num+1;
END IF;
END WHILE;
ELSE
WHILE in_num<0 DO
set re_i=re_i+1;
SET re_count=(SELECT count(*) FROM BANKHOLIDAY where HOLIDAYSTART<=(in_date-re_i days) AND HOLIDAYEND>=(in_date-re_i days) AND HOLIDAYSTATE='00');
IF re_count=0
THEN
IF DAYOFWEEK(in_date-re_i days)=1
THEN set re_num=re_num-1;
ELSEIF DAYOFWEEK(in_date-re_i days)=7
THEN set re_num=re_num-1;
ELSE set in_num=in_num+1;
END IF;
ELSE set re_num=re_num-1;
END IF;
END WHILE;
END IF;
RETURN in_date+re_num days ;
END
@ --(在此处添加一个@符号做为结束标志,方便命令检索 【db2 -td@ -vf holidayfunction.sql】)
其中,@是语句表示为结束符。
执行自定义函数脚本: db2 -td@ -vf holidayfunction.sql
文件内容:
CREATE FUNCTION getworkdate(in_date date,in_num INT)
RETURNS date
BEGIN
DECLARE re_num INT;
DECLARE re_i INT DEFAULT 0;
DECLARE re_count INT ;
DECLARE re_date date;
SET re_num =in_num;
IF in_num>0
THEN
WHILE in_num>0 DO
set re_i=re_i+1;
SET re_count=(SELECT count(*) FROM BANKHOLIDAY where HOLIDAYSTART<=(in_date+re_i days) AND HOLIDAYEND>=(in_date+re_i days) AND HOLIDAYSTATE='00');
IF re_count=0
THEN
IF DAYOFWEEK(in_date+re_i days)=1
THEN set re_num=re_num+1;
ELSEIF DAYOFWEEK(in_date+re_i days)=7
THEN set re_num=re_num+1;
ELSE set in_num=in_num-1;
END IF;
ELSE set re_num=re_num+1;
END IF;
END WHILE;
ELSE
WHILE in_num<0 DO
set re_i=re_i+1;
SET re_count=(SELECT count(*) FROM BANKHOLIDAY where HOLIDAYSTART<=(in_date-re_i days) AND HOLIDAYEND>=(in_date-re_i days) AND HOLIDAYSTATE='00');
IF re_count=0
THEN
IF DAYOFWEEK(in_date-re_i days)=1
THEN set re_num=re_num-1;
ELSEIF DAYOFWEEK(in_date-re_i days)=7
THEN set re_num=re_num-1;
ELSE set in_num=in_num+1;
END IF;
ELSE set re_num=re_num-1;
END IF;
END WHILE;
END IF;
RETURN in_date+re_num days ;
END
@ --(在此处添加一个@符号做为结束标志,方便命令检索 【db2 -td@ -vf holidayfunction.sql】)
相关文章推荐
- 简易登录,批量执行命令,批量copy文件shell脚本【Linux运维之道之脚本案例】
- linux学习第七十篇:expect脚本同步文件,expect脚本指定host和要同步的文件,构建文件分发系统,批量远程执行命令
- linux执行sh脚本文件命令
- Linux下的Mysql,导入执行sql文件命令
- 简易登录,批量执行命令,批量copy文件shell脚本【Linux运维之道之脚本案例】 推荐
- Linux下命令在命令行执行正常,放到脚本文件执行出错
- Linux下的Mysql,导入执行sql文件命令
- Linux下的Mysql,导入执行sql文件命令
- Linux 执行命令或脚本的屏幕输出(正常输出、警告、错误等信息)重定向输出到文件
- Linux中脚本文件的自动执行——crontab命令
- bat脚本执行mysql命令导入sql文件到数据库
- python写的批量操作远程主机脚本(命令执行,上传、下载文件)
- windows BAT自动化上传文件到linux server, 执行远程脚本
- Linux启动和关闭时自动执行的所有脚本文件
- Oracle导入SQL脚本执行和常用命令大全
- Linux启动和关闭时自动执行的所有脚本文件
- Linux中脚本文件的自动执行
- Linux Source命令及脚本的执行方式解析
- Linux 将命令所得的结果导入到文件
- Linux Source命令及脚本的执行方式解析