gpt4 book ai didi

mysql - 错误代码 1064 SQL

转载 作者:行者123 更新时间:2023-11-29 18:36:15 24 4
gpt4 key购买 nike

我在 MySQL 中的触发器和过程遇到问题,练习轨迹是:

定义一个触发器,自动删除去年仅进行初步访视的患者的访视。

这是我创建的 SQL 代码:

CREATE TRIGGER EliminaVisitePreliminari
AFTER INSERT ON Visita
FOR EACH ROW
BEGIN
IF(EXISTS(
SELECT Vis.ID_Visita
FROM Visita AS Vis, Preliminare AS Pre
WHERE Vis.ID_Visita=Pre.ID_Visita
AND DATEDIFF(CURRENT_DATE(), Vis.Data)>365
GROUP BY Vis.ID_Visita)) THEN
DELETE FROM Visita
WHERE ID_Visita=(
SELECT Vis.ID_Visita
FROM Visita AS Vis1, Preliminare AS Pre1
WHERE Vis1.ID_Visita=Pre1.ID_Visita
AND DATEDIFF(CURRENT_DATE(), Vis.Data)>365
); # Error here
END IF; # Here
END; # And here

程序如下:

定义一个计划程序,在每个结束月份自动计算每个月的干预金额,显示尚未售出的百分比

由我创建的 SQL:

CREATE PROCEDURE TotInterventiSettimanali(OUT Cont INT, SomTot INT, Saldare DECIMAL)
BEGIN
DECLARE Costo INT; # Error here
DECLARE DaSald DECIMAL; # Here
DECLARE Cont INT; # Here

SELECT COUNT(*), SUM(Vis.Parcella), AVG(Vis.Parcella) INTO Cont, SomTot, Saldare
FROM Visita AS Vis, Intervento AS Inerv
WHERE MONTH(Vis.Data)=MONTH(CURRENT_DATE())
AND Vis.ID_Visita=Interv.ID_Visita;

END; # And here

请帮助我..非常感谢!

最佳答案

MySQL 处理所有以“;”结尾的内容作为命令。要创建函数、过程和触发器,您必须将分隔符更改为其他内容,输入文本并将分隔符更改回来。例如,在您的情况下:

DELIMITER //

CREATE PROCEDURE TotInterventiSettimanali(OUT Cont INT, SomTot INT, Saldare DECIMAL)
BEGIN
.......
END;
//
DELIMITER ;

请注意过程文本后面的分隔符 //

关于mysql - 错误代码 1064 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45268006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com