日期:2014-05-16  浏览次数:20721 次

mysql存储过程出错(都两天了,救命啊!)
表shop里的内容如下!
+--------+--------+---------+---------------+
|   shopId   |   cityId   |   tradeId   |   shopName             |
+--------+--------+---------+---------------+
|   UA0AHA   |   UA           |   AH             |   gosure   s   shop   |
+--------+--------+---------+---------------+

其中cityId是shop的城市编号,tradeId是行业编号;
shopId的第12位是城市编号,45位是行业编号
现在要写一个存储过程在shop表里添加内容,
存储过程的输入参数是cityId   ,tradeId ,   shopName  
shopId   要在存储过程根据(cityId   ,tradeId)自动生成,

比如现在有一个shopId   为UA0AHA的记录,如果再插入一个cityId   =   UA,tradeId=AH的shop   那么它的shopId   就应该是UA0AHB了


现在我写的存储过程如下,(存储过程我刚学!见笑了!)

DELIMITER   $$

DROP   PROCEDURE   IF   EXISTS   `test`.`insertIntoShop`$$
CREATE   PROCEDURE   `test`.`insertIntoShop`   (
    in   cityId   varchar(2),
    in   tradeId   varchar(2),
    in   shopName   varchar(45)
)
BEGIN
  DECLARE   shopId   varchar(6);
  DECLARE   lastShopId   varchar(6);
  DECLARE   stopFlag   int;
  DECLARE   cursor_shopId   CURSOR
    FOR   select   shopId
            from   `shop`
            where   `cityId`   =   cityId   and   `tradeId`   =   tradeId
            group   by   shopId   desc   limit   1;
    DECLARE   CONTINUE   HANDLER   FOR   NOT   FOUND   set   stopFlag=1;

    OPEN   cursor_shopId;
    REPEAT
        FETCH   cursor_shopId   into   lastShopId;
        UNTIL   stopFlag   =   1
    end   REPEAT;
    CLOSE   cursor_shopId;

    select   lastShopId;
#问题在这里出现
#明明有一条记录,可是lastShopId   为NULL
END$$

DELIMITER   ;

------解决方案--------------------
up