代码之家  ›  专栏  ›  技术社区  ›  VoodooChild

SQL查询和存储过程未生成所需结果

  •  1
  • VoodooChild  · 技术社区  · 16 年前

    我有这个表和存储过程函数:

    表格:

    CREATE TABLE _DMigNumbers(
        Number numeric(20,0) NOT NULL PRIMARY KEY
    );
    INSERT INTO _DMigNumbers VALUES(0)
    

    CREATE FUNCTION read_and_increment()
    RETURNS NUMERIC(20,0)
    BEGIN
        DECLARE @number_just_read NUMERIC(20,0);
    
          SELECT number INTO @number_just_read
            FROM _DMigNumbers;
    
          UPDATE _DMigNumbers
             SET number = number + 1;
       RETURN @number_just_read;
    End
    

    我也创建了这个数字表

    CREATE TABLE _Numbers (
        Number int NOT NULL PRIMARY KEY
    );
    INSERT INTO _Numbers VALUES(1)
    INSERT INTO _Numbers VALUES(2)
    INSERT INTO _Numbers VALUES(3)
    INSERT INTO _Numbers VALUES(4)
    

    现在:

    当我这样做时:

    select 
        f.Number
        ,read_and_increment()
    from _Numbers f
    

      Number-----Value
    
       1          0   
       2          0   
       3          0   
       4          0   
    
    

    我明白,我得到相同的价值观,因为单一的选择,但不知道我需要做什么,以获得我现在所追求的。。。。。。

    我不能使用IDENTITY或autoincrement查看 my previous question for more details if interested...

    伏都教

    1 回复  |  直到 9 年前
        1
  •  2
  •   Calvin Allen    16 年前

    尝试将函数标记为 NOT DETERMINISTIC

    CREATE FUNCTION read_and_increment()
    RETURNS NUMERIC(20,0)
    NOT DETERMINISTIC
    BEGIN
        DECLARE @number_just_read NUMERIC(20,0);
    
          SELECT number INTO @number_just_read
            FROM _DMigNumbers;
    
          UPDATE _DMigNumbers
             SET number = number + 1;
       RETURN @number_just_read;
    End
    
    推荐文章