【问题标题】:Function complain about [not allowed to return a result set from a function] when returning bigint返回 bigint 时,函数抱怨 [不允许从函数返回结果集]
【发布时间】:2011-11-09 23:58:32
【问题描述】:

我忘记了放置分隔符指令,一些分号,并且使用了 tsl 语法,例如 [select variable = field],这在 mysql 中无效。
使用 tsl 语法时的 Mysql 错误是 [不允许从函数返回结果集] 并且没有多大帮助。
@AndreKR 把这一切都指向我,谢谢。
我使用 mysqlworkbench 5.2.30 CE。 功函数变为:

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 ;

【问题讨论】:

  • 我很困惑..这应该是mysql还是tsql?它不能同时是两者。如果是tsql,变量需要以'@'为前缀。

标签: mysql sql database tsql


【解决方案1】:

我认为SELECT workval = count(1) FROM ... 语法无效。我想你的意思是:SELECT count(1) INTO workval FROM ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-17
    • 2019-09-03
    • 2012-12-18
    • 2019-06-08
    • 2020-04-10
    • 1970-01-01
    • 2012-08-06
    • 2020-06-09
    相关资源
    最近更新 更多