返回bigint时,函数抱怨[不允许从函数返回结果集] [英] Function complain about [not allowed to return a result set from a function] when returning bigint
问题描述
我忘了放下定界符指令,使用一些分号,并且使用了像[select variable = field]这样的tsl语法,该语法在mysql中无效.
使用tsl语法时出现Mysql错误[不允许从函数返回结果集]并没有太大帮助.
@AndreKR将所有内容都指向我,谢谢.
我正在使用mysqlworkbench 5.2.30 CE.工作功能变为:
I forget put delimiter directive, some semicolon and was using tsl syntax like [select variable = field] that is not valid in mysql.
Mysql error when you use tsl syntax is [not allowed to return a result set from a function] and dont help much.
@AndreKR point all of it to me, thanks.
Im using mysqlworkbench 5.2.30 CE.
The work function become:
delimiter //
CREATE FUNCTION nextval (seq_name varchar(100))
RETURNS bigint(20)
READS SQL DATA
NOT DETERMINISTIC
BEGIN
DECLARE workval bigint(20);
SELECT count(1) into workval
FROM tip_sequence
WHERE sequencename = seq_name;
IF workval <> 1 THEN
DELETE
FROM tip_sequence
WHERE sequencename = seq_name;
INSERT
INTO tip_sequence (sequencename, sequenceval, sequencestep)
VALUES (seq_name, 1, 1);
END IF;
SELECT sequenceval into workval
FROM tip_sequence
WHERE sequencename = seq_name;
UPDATE tip_sequence
SET sequenceval = sequenceval + sequencestep
WHERE sequencename = seq_name;
RETURN workval;
END//
delimiter ;
推荐答案
我认为 SELECT workval = count(1)FROM ...
语法无效.我认为您的意思是: SELECT count(1)从...进入工作区.
.
I don't think the SELECT workval = count(1) FROM ...
syntax is valid. I think what you mean is: SELECT count(1) INTO workval FROM ...
.
这篇关于返回bigint时,函数抱怨[不允许从函数返回结果集]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!