私には、まるで
のように見えます- 手順を「変換」する必要があります
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;
最後に、これらの関数とプロシージャはすべて同じ問題を処理するため、すべてをパッケージに入れると便利です。 。