Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como escrever um procedimento PL/SQL com x parâmetros de entrada e entrada/saída de x parâmetros combinados


Para mim, parece que
  • você deve "converter" os procedimentos que calculam cada parte do STUDENT_ID em funções
    • Por quê? Porque - como é agora - os procedimentos precisam ter um parâmetro OUT para que possam retornar o que calcularam. E isso não passa de uma função
  • passar informações para cada um deles
  • obtenha o resultado
  • concatenar partes do resultado no STUDENT_ID final valores

Algo assim:
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 essas funções e procedimentos lidam com o mesmo problema, seria bom colocá-los todos em um pacote .