我需要创建一个接受参数id的函数。然后我在一个表上做一个选择案例,对于这个给定的id。案例中的when语句计算行数。
这是我的功能:
CREATE function db_name.insert_stage(idStage INT)
returns integer
BEGIN
SELECT CASE
WHEN COUNT(*) < 10 THEN 0
WHEN COUNT(*) >= 10 and COUNT(*) <= 12 THEN 392
WHEN COUNT(*) >= 13 and COUNT(*) <= 17 THEN 490
ELSE 588
END AS cost
FROM inscriptions WHERE paid = 1 AND id_stage = idStage;
RETURN cost;
END
然后我使用触发器为舞台中已存在的每一行设置字段的成本。在阶段插入时也会调用此触发器:
CREATE TRIGGER insert_stage_frais_secretariat BEFORE INSERT ON stage
FOR EACH ROW SET stage.fraisSecretariat = select anper_extranet.insert_stage(stage.id);
我不知道触发器是否正常工作,因为该功能不是。
这是phpmyadmin告诉我的内容:
我不知道第10行有什么问题,因为我觉得它是什么时候,虽然我尝试了select语句但是它有效。
答案 0 :(得分:2)
试试这个:
delimiter //
CREATE FUNCTION db_name.insert_stage(idStage INT)
RETURNS Integer
BEGIN
DECLARE var_name INTEGER;
SET var_name = 0;
SELECT CASE
WHEN COUNT(*) < 10 THEN 0
WHEN COUNT(*) >= 10 and COUNT(*) <= 12 THEN 392
WHEN COUNT(*) >= 13 and COUNT(*) <= 17 THEN 490
ELSE 588
END
into var_name
FROM inscriptions WHERE paid = 1 AND id_stage = idStage;
RETURN var_name;
END //