Mysql 在我的sql中的触发器中调用函数
作用Mysql 在我的sql中的触发器中调用函数,mysql,sql,database,rdbms,Mysql,Sql,Database,Rdbms,作用 delimiter $$ create function my_calculation( s1_ia_att decimal, s1_t1 decimal, s1_t2 decimal, s1_t3 decimal, s2_ia_att decimal, s2_t1 decimal, s2_t2 decimal, s2_t3 decimal, s3_ia_att decimal, s3_t1 decimal, s3_t2 decimal, s3_t3 decimal, s4_ia_
delimiter $$
create function my_calculation( s1_ia_att decimal, s1_t1 decimal, s1_t2 decimal, s1_t3 decimal, s2_ia_att decimal, s2_t1 decimal, s2_t2 decimal, s2_t3 decimal, s3_ia_att decimal, s3_t1 decimal, s3_t2 decimal, s3_t3 decimal, s4_ia_att decimal, s4_t1 decimal, s4_t2 decimal, s4_t3 decimal, s5_ia_att decimal, s5_t1 decimal, s5_t2 decimal, s5_t3 decimal, s6_ia_att decimal, s6_t1 decimal, s6_t2 decimal, s6_t3 decimal, s7_ia_att decimal, s7_t1 decimal, s7_t2 decimal, s7_t3 decimal, s8_ia_att decimal, s8_t1 decimal, s8_t2 decimal, s8_t3 decimal )
returns int
deterministic
begin
RETURN
(s1_t1 + s1_t2 + s1_t3 - LEAST(s1_t1, s1_t2, s1_t3)) / 2
+
CASE
WHEN s1_ia_att > 95 THEN 5
WHEN s1_ia_att BETWEEN 81 AND 95 THEN 4
WHEN s1_ia_att BETWEEN 76 AND 80 THEN 3
WHEN s1_ia_att BETWEEN 61 AND 75 THEN 2
WHEN s1_ia_att < 60 THEN 0
(s2_t1 + s2_t2 + s2_t3 - LEAST(s2_t1, s2_t2, s2_t3)) / 2
+
CASE
WHEN s2_ia_att > 95 THEN 5
WHEN s2_ia_att BETWEEN 81 AND 95 THEN 4
WHEN s2_ia_att BETWEEN 76 AND 80 THEN 3
WHEN s2_ia_att BETWEEN 61 AND 75 THEN 2
WHEN s2_ia_att < 60 THEN 0
END;
END $$
DELIMITER ;
我已经调整了我的触发器和功能
并且,ia_att_tot
字段仍然是null
我无法找到此代码中的问题所在。
有人能告诉我我的代码出了什么问题吗
我的桌子
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`s1_ia_att` DECIMAL(12, 2) NULL,
....
....
`s1_t1` DECIMAL(12, 2) NULL,
`s1_t2` DECIMAL(12, 2) NULL,
`s1_t3` DECIMAL(12, 2) NULL,
....
....
`s1_ia_tot` DECIMAL(12, 2) NULL,
......
.....
PRIMARY KEY (`id`)
);
您可能正在向函数中的CASE语句传递超出范围的值。由于case语句中没有ELSE子句,因此它默认返回NULL。定义ELSE子句并设置非空值。然后看看会发生什么。代码看起来正常。但是,
value
的声明很突出,因为它没有被使用。真正的代码是什么样子的?
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`s1_ia_att` DECIMAL(12, 2) NULL,
....
....
`s1_t1` DECIMAL(12, 2) NULL,
`s1_t2` DECIMAL(12, 2) NULL,
`s1_t3` DECIMAL(12, 2) NULL,
....
....
`s1_ia_tot` DECIMAL(12, 2) NULL,
......
.....
PRIMARY KEY (`id`)
);