[英]Error 1064 on MySQL Procedure
I create a procedure like this 我创建一个这样的程序
DELIMITER $$
CREATE PROCEDURE proc_tambah_na ( IN v_nis VARCHAR( 20 ))
BEGIN
DECLARE v_selesai INTEGER DEFAULT 0;
DECLARE v_semester INTEGER;
DECLARE v_nilai INTEGER DEFAULT 0;
DECLARE v_jur INTEGER;
DECLARE cur_mp CURSOR FOR
select semester, sum(nilai) as jml_nilai_mp from mengambil_mp amp join mata_pelajaran mp on (amp.kd_mp=mp.kd_mp) where nis=v_nis;
SELECT id_jurusan INTO v_jur FROM siswa s jOIN kelas k on (s.id_kelas=k.id_kelas) where nis=v_nis;
DECLARE cur_mp_un CURSOR FOR
select semester, sum(nilai) as jml_nilai_mp_un from mengambil_mp amp join mata_pelajaran mp on (amp.kd_mp=mp.kd_mp) where nis=8091010010 and ket_mp_un='ya' and (jurusan=v_jur or jurusan=1) group by semester;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_selesai = 1;
OPEN cur_mp;
get_nilai_mp : LOOP
FETCH cur_mp INTO v_semester, v_nilai;
IF v_selesai = 1 THEN
LEAVE get_nilai_mp;
END IF;
INSERT INTO nilai_akhir (nis, semester, jml_nilai_mp) VALUES (v_nis, v_semester, v_nilai);
END LOOP get_nilai_mp;
CLOSE cur_mp;
SET v_selesai=0;
OPEN cur_mp_un;
get_nilai_mp_un : LOOP
FETCH cur_mp_un INTO v_semester, v_nilai;
IF v_selesai = 1 THEN
LEAVE get_nilai_mp_un;
END IF;
UPDATE nilai_akhir SET nilai=v_nilai WHERE nis=v_nis AND semester=v_semester;
END LOOP get_nilai_mp_un;
CLOSE cur_mp_un;
END $$
DELIMITER ;
but it return an error messege : 但它返回一个错误信息:
#
1064 - You have an error in your SQL syntax;#
1064-您的SQL语法有误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE cur_mp_un CURSOR FOR select semester, sum(nilai) as jml_nilai_' at line 13在第13行上,检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在'DECLARE cur_mp_un CURSOR FOR select semester,sum(nilai)as jml_nilai_'附近使用
I don't know what is wrong with that line.. I think it's already correct, but why i return that error messege.. 我不知道那条线是什么问题..我认为这已经是正确的,但是为什么我要返回该错误信息。
PS: sorry for the variable name, I use my native language for them, so don't be bothered by that PS:对不起,变量名,我用我的母语,所以不要被它困扰
There is an aggregated function sum(nilai)
without the GROUP BY clause. 有一个没有GROUP BY子句的聚合函数
sum(nilai)
。
Aggregated funcions can only be used together with GROUP BY. 聚合函数只能与GROUP BY一起使用。
DECLARE cur_mp_un CURSOR FOR
DECLARE cur_mp_un CURSOR FOR
select semester, sum(nilai) as jml_nilai_mp选择一个学期,sum(nilai)作为jml_nilai_mp
from mengambil_mp amp来自mengambil_mp放大器
join mata_pelajaran mp on (amp.kd_mp=mp.kd_mp)加入(a.kd_mp = mp.kd_mp)mata_pelajaran mp
where nis=v_nis其中nis = v_nis
GROUP BY semester ;按学期分组;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.