mysql - 创建过程并将变量设置为查询时出错

标签 mysql stored-procedures

这是一个简单的问题,但我找不到错误

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$

关于mysql - 创建过程并将变量设置为查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721452/

相关文章:

mysql - 设置变量结果,来自查询

php - 使用 Docker 我得到错误 : "SQLSTATE[HY000] [2002] No such file or directory"

php - UTF-8一路过关斩将

mysql - 测试我使用的是 MySQL 语法吗?

sql-server - 微软 SQL : Suppress return value of stored procedure called in stored procedure

sql - 查找表中所有数值变量的均值、标准差、百分位数

mysql - 创建时间戳为同一天的新表

MySQL LEFT JOIN 与 IF

sql-server - 如何使用 SQL Server 使用 ETL 存储过程提取数据

mysql - 在查询结果中,防止系列中最后一个数字后面出现逗号