表(testtab)两个字段 id(int),param(int)
存储过程功能为:获取一个数字ID,这个ID是存放在 id为0的param里的开始先检测有没有id为0的这条记录,如果没有添加 id为0,param为1的记录,
接下来就查询返回 id为1的param值,每次查询成功后param数值+1急用,谢谢

解决方案 »

  1.   

    没看明白接下来就查询返回 id为1的param值  --  应该是id为0的parm值吧
      

  2.   

    id   其他列  param
    0    ..     1
    1    ..     0
    2    ..     0
    大概就是这这么一个表,id是主键,递增的,如果要给这张表添加新纪录需要一个新id,这个新id是以
    这张表id为0的那条记录里param参数+1取来的
    存储过程功能就是获取一个新id,并且使原来的id+1
    空表的时候需要添加默认记录 id为0 param为1
      

  3.   

    你自己测试一下吧
    DELIMITER //
    DROP PROCEDURE IF EXISTS lp_param_get // 
    CREATE PROCEDURE lp_param_get()LABEL_PROC:BEGIN
    SET @id = 0;
    SELECT param INTO @param FROM testtab WHERE id = @id;
    IF FOUND_ROWS() = 0 THEN
    SET @param = 1;
    INSERT INTO testtab (id, param) VALUES (@id, @param + 1);
    ELSE
    UPDATE testtab SET param = @param + 1 WHERE id = @id;
    END IF;

    # return 
    SELECT @param AS return_param;

    END LABEL_PROC //
    DELIMITER ;
      

  4.   

    楼主的意思是获得新ID后,表里面要插一条对应ID的记录喽
      

  5.   

    谢谢 4#
    问下 my sql里面 Function和procedure有啥区别的,如果那个写成function代码一样吗
      

  6.   

    函数可以嵌入在sql中使用的,而存储过程不行存储过程可以返回多个参数,返回多个结果集这是主要的区别吧
      

  7.   


    把开头、结尾换下,就可以了,然后返回一直return值。