Pour moi, c'est comme si
- vous devez "convertir" les procédures qui calculent chaque partie du
STUDENT_ID
en fonctions- Pourquoi ? Parce que - comme c'est le cas maintenant - les procédures doivent avoir un paramètre OUT pour qu'elles puissent renvoyer ce qu'elles ont calculé. Et ce n'est rien d'autre qu'une fonction
- transmettre des informations à chacun d'eux
- obtenir le résultat
- concaténer résultats dans le
STUDENT_ID
final valeurs
Quelque chose comme ça :
function f_name (par_name in varchar2) return varchar2 is
retval varchar2(20);
begin
retval := whatever code you have to find it
return retval;
end;
function f_surname (par_surname in varchar2) return varchar2 is
retval varchar2(20);
begin
retval := whatever code you have to find it
return retval;
end;
etc.
procedure student_id (par_surname in varchar2, par_name in varchar2, ...)
is
l_student_id varchar2(30);
begin
l_student_id := f_name (par_name) ||'-'||
f_surname(par_surname) ||'-'||
f_gender (par_gender) ||'-'||
...
f_state (par_state);
dbms_output.put_line('Student_ID is: ' || l_student_id);
end;
Enfin, comme toutes ces fonctions et procédures traitent du même problème, il serait bien de les mettre toutes dans un paquet .