2016-05-14 4 views
-1

は、私はこの問題は、カーソルの作成に..ですOracleエラー、私はこのエラーを持っているか、なぜ私は問題が欠落している右括弧

を理解していないが、彼がいることを言うのはなぜ理解していません...

を右parentesisが不足してこれが私のコードです:

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

角括弧なしで計算された列に名前を付ける)?

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 
; 

それはまだ動作していない場合は、このクエリが動作することを確認し、あなたはそれが第二1缶、最初のエラーに集中する方が良いでしょうテーブル/列

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 

の名前を入力ミスした可能性がありますしばしば最初のものによって引き起こされ、混乱することがあります。

関連する問題