变量中的MySQL存储过程语法错误
我有一个带有begindate lesson count和weekdays列的表组。我想写一个MySQL过程,用于根据组将数据添加到另一个名为lessons的表中。但我无法处理MySQL的语法。您能否帮助我解决该程序中的问题:变量中的MySQL存储过程语法错误,mysql,stored-procedures,procedure,Mysql,Stored Procedures,Procedure,我有一个带有begindate lesson 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 lessonCoun
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
CREATE PROCEDURE simpleproc(在idGroup INT、groupName varchar(20)、beginDate date、weekday1 INT、weekday2 INT、lessonCount INT中)
开始
我宣布;
集合i:=1;
而我这将运行。确保:1。当
循环时,在中代码的适当位置增加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 ;
DROP过程(如果存在)`simpleproc`;
分隔符;;
CREATE DEFINER=`root`@`localhost`PROCEDURE`simpleproc`(在idGroup INT中,在groupName varchar(20)中,在beginDate date中,在weekday1 INT中,在weekday2 INT中,在lessonCount INT中)
开始
声明i int;
声明name1int;
申报价格;
集合i:=1;
虽然我不确定您是否能准备一个创建过程
。您至少缺少最后的结尾
,因此您确定代码完整吗?您可能也想添加错误消息。请确保我忘记复制两个端点。结束,而结束。它给出了错误代码1193:未知系统变量“i”。除了板条箱程序,您可以提出什么建议?请回答问题以添加缺少的零件。您必须声明i
或使用@i
(会话特定变量),这取决于您要执行的操作,该变量可能是正确的。它仍然有错误代码1064。我用MySQL Workbench测试了一下谢谢。如何从另一个表idGroup、groupName beginDate发送到此过程和调用过程?当我试图执行它时,它在第3行分号上仍然给出错误missed@M.Namiz我想这已经是另一个问题了。根据您的问题MySQL存储过程语法错误,在variables@M.Namiz您还可以通过使用在(weekday1,weekday2)中使用来优化代码,然后使用调用simpleproc(arg1,arg2,…)
@M.Namiz您也可以按照我在编辑后的答案中所述的方式明确说明分隔符。