Para mí, parece como si
- debe "convertir" procedimientos que calculan cada parte del
STUDENT_ID
en funciones- ¿Por qué? Porque, tal como está ahora, los procedimientos deben tener un parámetro OUT para que puedan devolver lo que calcularon. Y eso no es más que una función
- pasar piezas de información a cada uno de ellos
- obtener el resultado
- concatenar partes del resultado en el
STUDENT_ID
final valores
Algo como esto:
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;
Finalmente, como todas esas funciones y procedimientos se ocupan del mismo problema, sería bueno ponerlos todos en un paquete. .