ORACLE ERROR缺少右括号

时间:2016-05-14 18:29:39

标签: oracle plsql

我有问题,我不明白为什么会出现这个错误..

问题在于光标的创建,但我不明白为什么他说缺少正确的注射...

这是我的代码:

CREATE OR REPLACE FUNCTION classementEtudiantSemestre( p_idEtudiant IN Etudiants.idEtudiant%TYPE, p_idSemestre IN Semestres.idSemestre%TYPE) RETURN NUMBER IS 

CURSOR cur_lesmoys IS (

SELECT DISTINCT moyenneEtudiantSemestreAvecAbs(idEtudiant, idSemestre)
FROM ETUDIANTS E
JOIN GROUPES G ON G.idGroupe=E.idGroupe
JOIN SEMESTRES S ON G.idPromotion = S.idPromotion
WHERE idSemestre=p_idSemestre
ORDER BY moyenneEtudiantSemestreAvecAbs(idEtudiant, idSemestre) DESC


);

u_classement NUMBER:=1;

BEGIN

FOR rty_lesmoys IN cur_lesmoys LOOP

IF rty_lesmoyes.moyenneEtudiantSemestreAvecAbs(idEtudiant, idSemestre)=moyenneEtudiantSemestreAvecAbs(p_idEtudiant, p_idSemestre) THEN
RETURN u_classement;
ELSE
u_classement := u_classement +1;
END IF;
END LOOP;
END;

ORACLE错误:

3/23    PL/SQL: SQL Statement ignored
9/31    PL/SQL: ORA-00907: missing right parenthesis

请帮帮我..

1 个答案:

答案 0 :(得分:1)

这是否有效(即没有括号并命名计算列)?

CURSOR cur_lesmoys IS 
SELECT DISTINCT moyenneEtudiantSemestreAvecAbs(idEtudiant, idSemestre) AS resultCol
FROM ETUDIANTS E
JOIN GROUPES G ON G.idGroupe=E.idGroupe
JOIN SEMESTRES S ON G.idPromotion = S.idPromotion
WHERE idSemestre=p_idSemestre
ORDER BY moyenneEtudiantSemestreAvecAbs(idEtudiant, idSemestre) DESC
;

如果它仍然无效,请确保此查询有效,您可能输错了表/列的名称

SELECT DISTINCT moyenneEtudiantSemestreAvecAbs(idEtudiant, idSemestre)
FROM ETUDIANTS E
JOIN GROUPES G ON G.idGroupe=E.idGroupe
JOIN SEMESTRES S ON G.idPromotion = S.idPromotion
WHERE idSemestre=p_idSemestre
ORDER BY moyenneEtudiantSemestreAvecAbs(idEtudiant, idSemestre) DESC

最好把注意力放在第一个错误上,第二个错误通常可能是由第一个错误造成的并且令人困惑。