1.创建自定义函数
因自带的函数无法满足自己想要的需求,故需自定义一个函数,也是第一次接触,里面遇见了很多的坑。。。汇总一下
1.1创建语句
create or replace function 函数名([参数列表]) returns 数据类型(返回值的数据类型)
language sql
begin
sql语句;
return 值;
end;
举个例子
create or replace function aaa(a VARCHAR(16),b VARCHAR(16))
returns VARCHAR(16)
language sql
begin
DECLARE RESULT VARCHAR(16);
set RESULT = a / b;
set RESULT = RESULT * 100;
return cast(RESULT as int);
end;
这个方法是对传入的两个数进行相除,得到的结果在进行乘以100; 下面调用这个方法
这个在写的时候会遇到下面的几个坑。
第一个坑,传参计算得到的值不对
后来查了一下db2的资料,db2的运算算术是发现下面的规则:
论据1 论据2 结果
小数(a,b) 小数(c,d) 小数(p,s)
p=MAX(最大(b,d)+最大(ab,cd)
s=MAX(b,d)
但法的数位计算遵循以下规则:31-p+ss'(其中p为被除数的小数位,为被除数的小数位,s'为数的小数位)
意思就是1/5这个数据类型皆为int,所以结果为int 即结果为0
第二个坑,输出结果非法
这个是因为结果加了一个%导致的,具体怎么解决我最后也没去解决因为我这里对数据不影响,留给大佬去解决了。。。
第三个坑,没有加schema。。。
还有别的坑都是一点小问题,因为之前看的是按照MySQL的方式去做的,我实际的项目是在db2中建表的,所以遇到了几个小问题,这里就不一一贴出来了。