Erreur : ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en
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 :
Code:
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; |
J'obtiens le message suivant :
Citation:
Erreur : ORA-06502: PL/SQL : erreur numérique ou erreur sur une valeur: erreur de conversion des caractères en chiffres
Est-ce que quelqu'un pourrait m'aiguiller svp ??
Merci beaucoup d'avance !