用于计数循环的MySQL函数

时间:2016-10-28 15:06:56

标签: mysql

我们正在从FirebirdSQL迁移到MySQL,我们有一个存储函数,它接受一个int值并产生该行数。在将其转换为MySQL函数时,它返回结束增量数而不是行。

火鸟

contents_object = repository.contents(file_path)
push_status = contents_object.update("test_message",contents)

运行该功能:

SELECT CreateList(5)
结果:

1
2
3
4
5

的MySQL

   SET TERM ^ ;   
    RECREATE PROCEDURE CREATELIST (  NUM INTEGER) RETURNS (  CNT INTEGER)
    AS  BEGIN 
        Cnt = 1; 
        WHILE (Cnt <= num) DO 
          BEGIN SUSPEND; /* Return next line */ 
          Cnt = Cnt + 1; END END^

    SET TERM ; ^

运行该功能:

SELECT CreateList(5)
结果:

6

1 个答案:

答案 0 :(得分:1)

要在MySQL中获取表,必须使用存储过程:

DELIMITER ^ 
PROCEDURE `CreateList`(IN `num` INT)
BEGIN
    DECLARE cnt INT; 
    SET cnt = 1;
    create TEMPORARY table t (i int);
    sloop:LOOP 
        if (cnt <= num) 
            THEN SET cnt = cnt +1;
            insert into t value(cnt);
        ELSE LEAVE sloop;
        END IF;

    END LOOP;
    select * from t;
END