• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

一个有CASE的历程,总是出错,麻烦看看是咋了

mysql 搞代码 7年前 (2018-06-04) 163次浏览 已收录 0个评论

一个有CASE的过程,总是出错,麻烦看看是咋了

SQL code

  DROP PROCEDURE IF EXISTS proc_add_personnel; DELIMITER $$ CREATE PROCEDURE proc_add_personnel(ctt INT) BEGIN     DECLARE i INT DEFAULT 0;     DECLARE j INT;     DECLARE pos VARCHAR(10);     SET j = FLOOR(1+(RAND()*6);          CASE j WHEN 1 THEN  pos = '美工';            WHEN 2 THEN  pos = '网页设计';            WHEN 3 THEN  pos = '软件工程师';            WHEN 4 THEN  pos = '架构师';            WHEN 5 THEN  pos = '行政人员';            ELSE pos = '其他';     END CASE          WHILE i<ctt DO      INSERT INTO personnel(`of_year`,`of_position`,`of_wages`) VALUES (FLOOR(1+(RAND()*10)),'',FLOOR(1000+(RAND()*10000)));      SET i= i+1;     END WHILE; END$$  

欢迎大家阅读《一个有CASE的历程,总是出错,麻烦看看是咋了》,跪求各位点评,by 搞代码

错误信息:

SQL code

  Query : create procedure proc_add_personnel(ctt int) begin  declare i int default 0;  declare j int;  DECLARE pos VARCHAR(10);  set j = ...  Error Code : 1064 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 ';          case j when 1 then  pos = '美工';            WHEN 2 THEN  pos = '网页设�' at line 6   

——解决方案——————–
DROP PROCEDURE IF EXISTS proc_add_personnel;
DELIMITER $$
CREATE PROCEDURE proc_add_personnel(ctt INT)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE j INT;
DECLARE pos VARCHAR(10);
SET j = FLOOR(1+(RAND()*6);

CASE j WHEN 1 THEN set pos = ‘美工’ ;
WHEN 2 THEN set pos = ‘网页设计’;
WHEN 3 THEN set pos = ‘软件工程师’;
WHEN 4 THEN set pos = ‘架构师’;
WHEN 5 THEN set pos = ‘行政人员’;
ELSE set pos = ‘其他’;
END CASE;

WHILE i<ctt DO
INSERT INTO personnel(`of_year`,`of_position`,`of_wages`) VALUES (FLOOR(1+(RAND()*10)),”,FLOOR(1000+(RAND()*10000)));
SET i= i+1;
END WHILE;
END$$
DELIMITER ;

——解决方案——————–

SQL code

 DROP PROCEDURE IF EXISTS proc_add_personnel; DELIMITER $$ CREATE PROCEDURE proc_add_personnel(ctt INT) BEGIN   DECLARE i INT DEFAULT 0;   DECLARE j INT;   DECLARE pos VARCHAR(10);   SET j = FLOOR(1+(RAND()*6));    CASE j WHEN 1 THEN set pos = '美工' ;   WHEN 2 THEN set pos = '网页设计';   WHEN 3 THEN set pos = '软件工程师';   WHEN 4 THEN set pos = '架构师';   WHEN 5 THEN set pos = '行政人员';   ELSE set pos = '其他';   END CASE;       WHILE i<ctt DO   INSERT INTO personnel(`of_year`,`of_position`,`of_wages`) VALUES (FLOOR(1+(RAND()*10)),'',FLOOR(1000+(RAND()*10000)));   SET i= i+1;   END WHILE; END$$ DELIMITER ; 
------解决方案--------------------
少个分号
------解决方案--------------------
ELIMITER $$
DROP PROCEDURE IF EXISTS proc_add_personnel$$
CREATE PROCEDURE proc_add_personnel(ctt INT)
BEGIN
DECLARE i INT DEFAULT 0;
 DECLARE j INT;
 DECLARE pos VARCHAR(10);
 SET j = FLOOR(1+(RAND()*6));
CASE j WHEN 1 THEN SET pos='美工';
WHEN 2 THEN SET pos = '网页设计';
WHEN 3 THEN SET pos = '软件工程师';
WHEN 4 THEN SET pos = '架构师';
WHEN 5 THEN SET pos = '行政人员';
ELSE SET pos = '其他';
WHILE i<ctt DO
INSERT INTO personnel(`of_year`,`of_position`,`of_wages`) VALUES (FLOOR(1+(RAND()*10)),'',FLOOR(1000+(RAND()*10000)));
SET i= i+1;
END WHILE;

END CASE; 

END$$
DELIMITER ;


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:一个有CASE的历程,总是出错,麻烦看看是咋了

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址