这是一个直截了当的问题,但我找不到错误

CREATE PROCEDURE agregarCitaNota(in id int, in nota text)
BEGIN
DECLARE @column text;
SET @column = (SELECT Detalle FROM cita WHERE idCita = id);
IF @column = null THEN
    UPDATE cita SET Detalle = nota WHERE idCita = id;
ELSE
    UPDATE cita SET Detalle = Detalle + nota WHERE idCita = id;
END$


出于某种原因,它给了我一个错误,我一直在编写此代码,但无法正常工作。它说它在哪里

Set @column = (Select Detalle FROM cita WHERE idCita = id);


在此先感谢大家!

最佳答案

删除@user defined variables(@)和声明的变量(无@)之间有区别。

另外,您不应该命名像关键字这样的变量。

null的比较是通过... is null而不是... = null完成的。

如果您只是想知道某个条目是否存在,请使用exists()而不是实际获取数据。

如果要在文本后面附加文本,请使用concat()

CREATE PROCEDURE agregarCitaNota(in id int, in nota text)
BEGIN
IF NOT EXISTS (SELECT Detalle FROM cita WHERE idCita = id) THEN
    UPDATE cita SET Detalle = nota WHERE idCita = id;
ELSE
    UPDATE cita SET Detalle = CONCAT(Detalle, nota) WHERE idCita = id;
END IF;
END$

09-25 20:53