Bonsoir,
Je dois rendre un TP en PL/SQL et c'est la première fois que je m'essaie au langage d'Oracle.
Avec le code de ma fonction suivant :
J'obtiens le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 create or replace FUNCTION generer_prets (pnumsortie sortie.no_sortie%TYPE) RETURN NUMBER IS v_nopaq paquetage.no_paquetage%TYPE; v_caution paquetage.caution%TYPE; BEGIN FOR enr IN ( SELECT a.no_adherent, credits FROM adherent a INNER JOIN participe pa on a.no_adherent = pa.no_adherent WHERE pa.no_sortie = pnumsortie AND UPPER(payee) = 'V' FOR UPDATE OF credits) LOOP SELECT no_paquetage INTO v_nopaq FROM utilise u WHERE no_sortie = pnumsortie AND no_paquetage NOT IN( SELECT no_paquetage FROM pret WHERE date_retour IS NULL) AND ROWNUM = 1; SELECT caution INTO v_caution FROM paquetage WHERE v_nopaq = no_paquetage; IF v_caution < enr.credits THEN INSERT INTO pret VALUES (SYSDATE, v_nopaq, enr.no_adherent, NULL); UPDATE adherent SET credits = credits - v_caution WHERE no_adherent = enr.no_adherent; ELSE dbms_output.put_line('Problème de caution pour la paquetage ' + v_nopaq + ' et l''adhérent ' + enr.no_adherent); END IF; END LOOP; COMMIT; RETURN (0); EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('Attention : plus de paquetage disponible'); RETURN (-2); WHEN OTHERS THEN dbms_output.put_line('Erreur : ' || SQLERRM); RETURN (-1); END;Est-ce que quelqu'un pourrait m'aiguiller svp ??Erreur : ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres
Merci beaucoup d'avance !
Partager