salut a tous, je viens de creer une fonction stocker qui s`appelle CALCUL_COUT qui est censer de retourner le cout d`un appel telephonique apres reduction, la fonction est creer avec succes, mais lorsque j`avais creer le bloc anonyme dans lequel je fais appel a CALCUL_COUT en lui passant les parametres necessaires, une erreur s`est produite:
SP2-0552:variable de lien "00" non declaree
voici le bloc anonyme qui pose probleme et merci d`avance de vos suggestions:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| set serveroutput on;
accept v_hdr prompt 'donner heure debut de la reduction :'
accept v_hfr prompt 'donner heure fin de la reduction :'
accept v_tauxred prompt 'donner le taux de la reduction :'
accept v_numcomm prompt 'donner le numero de la communication :'
declare
v_heuredebut reduction.heuredebut%type:=&v_hdr;
v_heurefin reduction.heurefin%type:=&v_hfr;
v_tauxreduction reduction.tauxreduction%type:=&v_tauxred;
v_numcommunication communication.numcommunication%type:=&v_numcomm;
v_coutappel ligne.montantdisponible%type;
begin
v_coutappel:=CALCUL_COUT(v_heuredebut,v_heurefin,v_tauxreduction,v_numcommunication);
dbms_output.put_line('le montant total apres reduction est de :'||v_coutappel);
dbms_output.put_line('bravo');
Exception
when VALUE_ERROR then
dbms_output.put_line('Donnees entrees invalides!! respectez le type des donnees');
when others then
dbms_output.put_line('Erreur inattendu, verifiez vos entrees');
End;
/ |
la fonction CALCUL_COUT.sql(compiler avec succes):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| create or replace FUNCTION CALCUL_COUT(v_heuredebred reduction.heuredebut%type,v_heurefinred reduction.heurefin%type,v_tauxred reduction.tauxreduction%type,v_numcomm communication.numcommunication%type) return number is
v_coutapresreduction ligne.montantdisponible%type;
v_heurecomm communication.heurecomm%type;
v_duree communication.duree%type;
begin
select duree,heurecomm into v_duree,v_heurecomm from communication where numcommunication=v_numcomm;
if(v_heurecomm>=v_heuredebred and v_heurecomm<=v_heurefinred) then
v_coutapresreduction:=(v_duree*170)-(v_duree*170*v_tauxred);
return v_coutapresreduction;
else
return -1;
end if;
exception
when NO_DATA_FOUND then
return -2;
when others then
return -3;
End CALCUL_COUT;
/ |
Partager