За мен изглежда така, сякаш
- трябва да „конвертирате“ процедури които изчисляват всяка част от
STUDENT_ID
във функции- Защо? Тъй като - както е сега - процедурите трябва да имат OUT параметър, за да могат да върнат това, което са изчислили. И това не е нищо друго освен функция
- предавайте информация на всеки от тях
- получи резултата
- свързване резултат парчета в крайния
STUDENT_ID
стойности
Нещо подобно:
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;
И накрая, тъй като всички тези функции и процедури се справят с един и същ проблем, би било хубаво да ги поставите всички в пакет .