Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie man eine PL/SQL-Prozedur mit x Eingabeparametern und Eingabe/Ausgabe von x Parametern kombiniert schreibt

Für mich sieht es so aus, als ob

  • sollten Sie Prozeduren "konvertieren". die jeden Teil der STUDENT_ID berechnen in Funktionen
    • Warum? Denn - so wie es jetzt ist - Prozeduren müssen einen OUT-Parameter haben, damit sie zurückgeben können, was sie berechnet haben. Und das ist nichts anderes als eine Funktion
  • Teile Informationen an jeden von ihnen weitergeben
  • Ergebnis abrufen
  • verketten Ergebnisstücke in die endgültige STUDENT_ID Werte

Etwa so:

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;  

Da all diese Funktionen und Prozeduren dasselbe Problem behandeln, wäre es schließlich schön, sie alle in ein Paket zu packen .