mysql出现Error Code: 2014 Commands out of sync; you can‘t run this command now

从网上找到所有的相关内容几乎都是说sql语句的执行顺序不对,但是我运行的只是一个function:

DELIMITER //

#计算学生的平均成绩
DROP FUNCTION IF EXISTS GPA;
CREATE FUNCTION GPA(sID CHAR(3))
RETURNS FLOAT
READS SQL DATA
BEGIN
	DECLARE state INT DEFAULT 0;
    DECLARE grade, credit, total_g, total_c, gpa FLOAT DEFAULT 0;
    DECLARE 
		cursor_ CURSOR FOR
        (SELECT Score, CourseCredit From Grade, Course WHERE Grade.studentID = sID AND Course.CourseID = Grade.CourseID);
	DECLARE CONTINUE HANDLER FOR NOT FOUND SET state = 1;
    OPEN cursor_;
    REPEAT
		FETCH cursor_ INTO grade, credit;
        IF state = 0 THEN 
			SET total_g = total_g + grade*credit;
			SET total_c = total_c + credit;
		END IF;
		UNTIL state = 1
    END REPEAT;
    CLOSE cursor_;
    SET gpa = total_g/total_c;
    RETURN gpa;
END //

DELIMITER ;

后来发现解决方法:把“DROP FUNCTION IF EXISTS GPA;”最后的分号改成"//"

参考https://cloud.tencent.com/developer/ask/sof/252126

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值