For mig ser det ud som om
- du bør "konvertere" procedurer der beregner hver del af
STUDENT_ID
ind i funktioner- Hvorfor? Fordi - som det er nu - skal procedurer have en OUT-parameter, så de kan returnere det, de har beregnet. Og det er ikke andet end en funktion
- giv oplysninger til hver af dem
- få resultatet
- sammenkæd resultatstykker til den endelige
STUDENT_ID
værdier
Noget som dette:
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;
Endelig, da alle disse funktioner og procedurer beskæftiger sig med det samme problem, ville det være rart at lægge dem alle sammen i en pakke .