表名字是line,主键line_seq,我想根据主键来更新这个表所有数据的字段lastupdatetime.
自己搜了一上午没写出来。DELIMITER $$  
DROP PROCEDURE IF EXISTS `test`.`CursorProc` $$  
CREATE PROCEDURE `test`.`CursorProc` () 
BEGIN
  DECLARE no_more_products INT;
  DECLARE prd_code VARCHAR (255);
  DECLARE cur_product CURSOR FOR 
  SELECT 
    line_seq 
  FROM
    line;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_products=1;
  SET no_more_products=0;
  OPEN cur_product;
  REPEAT
    FETCH cur_product INTO prd_code;
    UPDATE 
      line 
    SET
      lastupdate_time ='2014-02-12 01:42:15' 
    WHERE line_seq=prd_code;
    UNTIL no_more_products = 1 
  END REPEAT;
  CLOSE cur_product;
END $$  
DELIMITER;

解决方案 »

  1.   

    你这个有点需求有点怪你这不就是将line所有行的    lastupdate_time 都更新为   '2014-02-12 01:42:15' 么直接update line set lastupdate_time = '2014-02-12 01:42:15'
      

  2.   


    是因为需要对大量数据做更新,直接update感觉老出错
      

  3.   

    楼主还是不要用存储过程,直接用 update 语句就行了。