麻烦大家看看这个Mysql 的存储过程错在哪?

grace8 2010-04-27 03:09:05
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;
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
grace8 2010-04-27
  • 打赏
  • 举报
回复
你说的对,当时确实有这个的,我把它删除了。不管怎么说,你们是我学习的榜样!!
WWWWA 2010-04-27
  • 打赏
  • 举报
回复
如果用分号,每一个赋值语句加SET,SET @uuid1 = UUID(); SET @uuid2 = UUID();
否则用逗号
ACMAIN_CHM 2010-04-27
  • 打赏
  • 举报
回复
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)
grace8 2010-04-27
  • 打赏
  • 举报
回复
呵呵,实际上这表有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
wwwwb 2010-04-27
  • 打赏
  • 举报
回复
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 ;
ACMAIN_CHM 2010-04-27
  • 打赏
  • 举报
回复
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>

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧