Linux 执行DB2数据库导入存储过程/自定义函数脚本文件命令

来源:互联网 发布:法国外籍军团知乎 编辑:程序博客网 时间:2024/05/23 14:13


导入存储过程/自定义函数: 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】)