För mig ser det ut som om
- du bör "konvertera" procedurer som beräknar varje del av
STUDENT_ID
till funktioner- Varför? För - som det är nu - måste procedurer ha en OUT-parameter så att de kan returnera vad de beräknat. Och det är inget annat än en funktion
- vidarebefordra information till var och en av dem
- få resultatet
- sammanfoga resultatbitar till den slutliga
STUDENT_ID
värden
Något så här:
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;
Slutligen, eftersom alla dessa funktioner och procedurer hanterar samma problem, skulle det vara trevligt att lägga dem alla i ett paket .