簡體   English   中英

MySQL過程上出現錯誤1064

[英]Error 1064 on MySQL Procedure

我創建一個這樣的程序

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 ;

但它返回一個錯誤信息:

# 1064-您的SQL語法有誤; 在第13行上,檢查與您的MySQL服務器版本相對應的手冊以獲取正確的語法,以在'DECLARE cur_mp_un CURSOR FOR select semester,sum(nilai)as jml_nilai_'附近使用

我不知道那條線是什么問題..我認為這已經是正確的,但是為什么我要返回該錯誤信息。

PS:對不起,變量名,我用我的母語,所以不要被它困擾

有一個沒有GROUP BY子句的聚合函數sum(nilai)
聚合函數只能與GROUP BY一起使用。

DECLARE cur_mp_un CURSOR FOR
選擇一個學期,sum(nilai)作為jml_nilai_mp
來自mengambil_mp放大器
加入(a.kd_mp = mp.kd_mp)mata_pelajaran mp
其中nis = v_nis
按學期分組;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM