您的位置:首页 > 运维架构 > Linux

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】)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: