Advertisement
Guest User

Untitled

a guest
Apr 18th, 2015
203
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  1. --faudra tester la fct
  2. CREATE OR REPLACE FUNCTION RECHERCHER
  3. (ANNETUD IN Groupes.annetud%TYPE DEFAULT 2 , ANSCO IN Groupes.ansco%TYPE DEFAULT 2004 )
  4. RETURN Groupes.refgroupe%TYPE
  5. AS
  6. maxEtud FORMATIONS.MAXANNETUD%TYPE;
  7. RefGrpe Groupes.refgroupe%TYPE;
  8. ExcAnnetudNull EXCEPTION;
  9. ExcAnnetud EXCEPTION;
  10. ExcAnsco EXCEPTION;
  11.  
  12. BEGIN
  13. IF Rechercher.ANNETUD < 1
  14. then raise ExcAnnetudNull;
  15.  
  16. IF Rechercher.ANNETUD > maxEtud
  17. then raise ExcAnnetud;
  18.  
  19. IF Rechercher.ANSCO > (select EXTRACT (YEAR FROM current_date) from dual;)--pt-on remplacer la rqt par une variable?
  20. THEN RAISE ExcAnsco;
  21.  
  22. SELECT refgroupe INTO Rechercher.refgroupe--RefGrpe
  23. FROM GROUPES
  24. WHERE refformdet = 'TECH-INDU'
  25. AND refimplan = 'INPS'
  26. AND ANNETUD = 2
  27. AND ANSCO = 2004
  28. AND refgroupe is not NULL
  29. group by refgroupe,refimplan,ansco,refformdet,annetud
  30. HAVING COUNT(*) = (select min(count(*))
  31. from GROUPES
  32. where refformdet = 'TECH-INDU'
  33. AND refimplan = 'INPS'
  34. AND ANNETUD = 2
  35. AND ANSCO = 2004
  36. AND refgroupe is not NULL
  37. group by refgroupe,refimplan,ansco,refformdet,annetud);
  38. RETURN RefGrpe;
  39. EXCEPTION--<<<<----
  40. WHEN ExcAnnetudNull
  41. THEN RAISE_APPLICATION_ERROR(-20055,'L annee d etude ' || Rechercher.ANNETUD || ' est NULL ou negative');
  42. WHEN ExcAnnetud
  43. THEN RAISE_APPLICATION_ERROR(-20100,'L annee d etude ' || Rechercher.ANNETUD || 'est superieure au max ' || maxEtud);
  44. WHEN ExcAnsco
  45. THEN RAISE_APPLICATION_ERROR(-20066,'L annee scolaire ' || Rechercher.ANSCO || ' est superieure a l annee en cours' || select EXTRACT (YEAR FROM current_date) from dual;);
  46. WHEN NO_DATA_FOUND
  47. THEN RAISE_APPLICATION_ERROR(100,'Pas de groupe ' || RefGrpe || ' trouve');
  48. WHEN TOO_MANY_ROWS
  49. THEN RAISE_APPLICATION_ERROR(-1422,'Il y a plusieurs groupes ayant le meme nb d etudiants min');
  50.  
  51. END RECHERCHER;
  52. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement