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

mysql存储过程的问题
DELIMITER $$
CREATE PROCEDURE actor_insert()
BEGIN 
  SET @X=0;
  ins;LOOP 
  SET @X=@X+1;
  IF @X=100 THEN
  LEAVE ins;  
  END IF 
  INSERT INTO actor(first_name,last_name) VALUES ('Test','201');
  END LOOP ins;
  END;
DELIMITER;
  这是mysql深入浅出的原句 我不懂那个ins是什么东东 是什么意思 
  语句意思的循环一百次 向 actor插入一个数据 当插入一百条后 退出循环

------解决方案--------------------
类似语法上的问题可以直接参考MYSQL的官方免费手册中的说明。

引用20.2.12.3. LOOP语句
[begin_label:] LOOP
statement_list
END LOOP [end_label]
LOOP允许某特定语句或语句群的重复执行,实现一个简单的循环构造。在循环内的语句一直重复直循环被退出,退出通常伴随着一个LEAVE 语句。

LOOP语句可以被标注。除非begin_label存在,否则end_label不能被给出,并且如果两者都出现,它们必须是同样的。

------解决方案--------------------
DELIMITER $$
DROP PROCEDURE IF EXISTS actor_insert$$
CREATE PROCEDURE actor_insert()
BEGIN
SET @X=0;
ins:LOOP
SET @X=@X+1;
IF @X=100 THEN
LEAVE ins;
END IF;
INSERT INTO actor(first_name,last_name) VALUES ('Test','201');
END LOOP ins;
END;$$
DELIMITER ;