变量中的MySQL存储过程语法错误

标签 mysql stored-procedures procedure

我有一个包含 begindate lessons count 和 weekdays 列的表组。我想编写 MySQL 程序,根据组将数据添加到另一个名为 lessons 的表中。但是我无法处理 MySQL 的语法。你能帮我解决这个过程中的问题吗:

CREATE PROCEDURE simpleproc (IN idGroup INT, IN groupName varchar(20),IN beginDate date, IN weekday1 INT, IN weekday2 INT, IN lessonCount INT)
BEGIN
DECLARE  i;
SET i:=1;
WHILE i<=lessonCount  DO
    DATE_ADD(beginDate,INTERVAL 1 DAY)
IF (WEEKDAY(beginDate)=weekday1) OR (WEEKDAY(beginDate)=weekday2) THEN
SET name:=groupName+i; 
SET price:=DIV(price,8)
   insert into lessons (lessonName, idGroup, lessonPrice, datePassed) 
   values (name,idGroup,price,begindate);
   SET i:=i+1
   END IF;



  END WHILE;


END

解决问题后,我会将这段代码添加到 Java 中的准备语句中

最佳答案

这将运行。确保: 1. 在 while 循环内的代码的适当位置递增 i。 2. 避免对字段和变量使用保留字(如name)。 3. 在对其进行整数除法之前在某处定义price 变量。您知道代码和表的结构。没有人能够为您做到这一点。

DROP PROCEDURE IF EXISTS `simpleproc`;
DELIMITER ;;
CREATE DEFINER=`root`@`localhost` PROCEDURE `simpleproc`(IN idGroup INT, IN groupName varchar(20),IN beginDate date, IN weekday1 INT, IN weekday2 INT, IN lessonCount INT)
BEGIN
DECLARE i int;
DECLARE name1 int;
DECLARE price int;

SET  i:=1;
WHILE i<=lessonCount  DO
  SET beginDate:=DATE_ADD(beginDate,INTERVAL 1 DAY);
  IF WEEKDAY(beginDate) in(weekday1,weekday2) THEN
    SET name1:=groupName+i; 
    SET price:=price DIV 8;
    insert into lessons (lessonName, idGroup, lessonPrice, datePassed) 
      values (name1,idGroup,price,begindate);
  END IF;
  SET i:=i+1;
END WHILE;
END
;;
DELIMITER ;

关于变量中的MySQL存储过程语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33409191/

相关文章:

MySql 查询以选择具有特定日期的记录

php - 我怎样才能获得购物车内下拉菜单的值(value)?总是归零

sql-server - CRLF 序列作为存储过程中的默认参数值

sql - 在 MySQL 表中搜索包含 CSV 数据的列以查找输入值的存在

asp.net - 在线程内调用存储过程以更新多个记录

如果表中不存在,Mysql触发器将插入行但不起作用

php - 将一个表的一列连接到另一个表的多列

时间:2019-03-17 标签:c#mysqlStoredProcedureInsert返回值

c# - 以记录作为参数调用 Oracle 存储过程

删除相关行的MySQL程序