create procedure p1()
     BEGIN
     DECLARE v INT;
 SET @uuid1 = UUID();
     SET v=0;
     WHILE v<2 DO
     INSERT INTO t1(id1,@uuid1);
     SET v= v+1;
     END WHILE;
     END;
       
而t1表结构是
create table t1(
      id1 int(10) not null primary key AUTO_INCREMENT,
      t1c1 varchar(100))AUTO_INCREMENT = 1;ERROR 1064 (42000): You have an error in your SQL syntax;

解决方案 »

  1.   

    mysql> delimiter //
    mysql>
    mysql> create procedure p1()
        -> BEGIN
        -> DECLARE v INT;
        -> SET @uuid1 = UUID();
        -> SET v=0;
        -> WHILE v<2 DO
        ->  INSERT INTO t1 values (id1,@uuid1); -- ACMAIN values !
        -> SET v= v+1;
        -> END WHILE;
        -> END;
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql> delimiter ;
    mysql>
      

  2.   

    DELIMITER $$
    DROP PROCEDURE IF EXISTS ddt$$
    CREATE PROCEDURE `testa`.`ddt`()
           BEGIN
    DECLARE v INTEGER;
    SET @uuid1=UUID();
      SET v=0;
      WHILE v<2 DO
      INSERT INTO t1 VALUES(id1,@uuid1);
      SET v= v+1;
      END WHILE;
        END$$DELIMITER ;
      

  3.   

    呵呵,实际上这表有20个 varchar 类型的数据,我刚才简化了。现在是:
    mysql> delimiter //
    mysql> create procedure p1()
         BEGIN
         DECLARE v INT;
     SET @uuid1 = UUID(); @uuid2 = UUID();@uuid3 = UUID(); @uuid4 = UUID();@uuid5 = UUID(); @uuid6 = UUID();@uuid7 = UUID(); @uuid8 = UUID();@uuid9 = UUID(); @uuid10 = UUID();@uuid11 = UUID();@uuid12 = UUID();@uuid13 = UUID();@uuid14 = UUID();@uuid15 = UUID();@uuid16 = UUID();@uuid17= UUID();@uuid18 = UUID();@uuid19 = UUID();@uuid20 = UUID();
         SET v=0;
         WHILE v<2 DO
         INSERT INTO t1 values(id1,@uuid1,@uuid2,@uuid3,@uuid4,@uuid5,@uuid6,@uuid7,@uuid8,@uuid9,@uuid10,@uuid11,@uuid12,@uuid13,@uuid14,@uuid15,@uuid16,@uuid17,@uuid18,@uuid19,@uuid20);
         SET v= v+1;
         END WHILE;
         END;
         //表结构如下:
    mysql> create table t1(
        ->  id1 int(10) not null primary key AUTO_INCREMENT,
        ->  t1c1 varchar(100),
        ->  t1c2 varchar(100),
        ->  t1c3 varchar(100),
        ->  t1c4 varchar(100),
        ->  t1c5 varchar(100),
        ->  t1c6 varchar(100),
        ->  t1c7 varchar(100),
        ->  t1c8 varchar(100),
        ->  t1c9 varchar(100),
        ->  t1c10 varchar(100),
        ->  t1c11 varchar(100),
        ->  t1c12 varchar(100),
        ->  t1c13 varchar(100),
        ->  t1c14 varchar(100),
        ->  t1c15 varchar(100),
        ->  t1c16 varchar(100),
        ->  t1c17 varchar(100),
        ->  t1c18 varchar(100),
        ->  t1c19 varchar(100),
        ->  t1c20 varchar(100)
        ->  )AUTO_INCREMENT = 1;
    Query OK, 0 rows affected (0.09 sec)就是按照你述说的改的,可还是出现如下错误呢?
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
    corresponds to your MySQL server version for the right syntax to use near '@uuid
    2 = UUID();@uuid3 = UUID(); @uuid4 = UUID();@uuid5 = UUID(); @uuid6 = UUID(' at
    line 4
      

  4.   

    SET @uuid1 = UUID(); @uuid2 = UUID();@uuid3 = UUID(); @uuid4 = UUID();@uuid5 = UUID(); @uuid6 = UUID();@uuid7 = UUID(); @uuid8 = UUID();@uuid9 = UUID(); @uuid10 = UUID();@uuid11 = UUID();@uuid12 = UUID();@uuid13 = UUID();@uuid14 = UUID();@uuid15 = UUID();@uuid16 = UUID();@uuid17= UUID();@uuid18 = UUID();@uuid19 = UUID();@uuid20 = UUID();分号改成逗号!mysql> set @x=1,@y=2;
    Query OK, 0 rows affected (0.00 sec)
      

  5.   

    如果用分号,每一个赋值语句加SET,SET @uuid1 = UUID(); SET @uuid2 = UUID();
    否则用逗号