以下函数创建查询时出错:
CREATE FUNCTION `_increase_num` () RETURNS int(11)
RETURNS INT
READS SQL DATA
DETERMINISTIC
BEGIN
RETURN IF(@counter, @counter:=@counter+1, @counter:=1);
END
- 知道如何解决吗?
- 我可以避免使用 ; 在上面的查询中?开发框架不允许一次调用多个查询,并将此标识为多个查询。
EDIT1:函数的目的是使每一行都是唯一的,就像一个自动增加的主键。但是出于某些开发原因,我不能使用自动递增的主键。
EDIT2:错误消息很常见,查询失败。您的查询有误。
EDIT3:我这样使用函数:SELECT _increase_num() as rownr, content FROM mytable
工作解决方案:
CREATE FUNCTION _increase_num()
returns int
return IF(@counter, @counter:=@counter+1, @counter:=1)
这是一个没有语法错误的版本:
不过有一点警告,每当计数器丢失它的值时,它将从 1 开始。另外,当从多个进程并行调用该函数时,我不会花任何钱来研究它的工作情况。
编辑: ”;” 在存储过程语言中有特殊含义,它在过程中分隔语句。这就是您通常将语句终止符更改为其他内容的原因:
然而,对于这个简单的过程,我们不需要开始/结束块。那是:
会做。