Đối với tôi, có vẻ như
- bạn nên "chuyển đổi" thủ tục tính toán mọi phần của
STUDENT_ID
thành chức năng- Tại sao? Bởi vì - như bây giờ - các thủ tục phải có tham số OUT để chúng có thể trả về những gì chúng đã tính toán. Và đó không là gì ngoài một chức năng
- chuyển các phần thông tin cho mỗi người trong số họ
- nhận được kết quả
- nối phần kết quả vào
STUDENT_ID
cuối cùng giá trị
Một cái gì đó như thế này:
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;
Cuối cùng, vì tất cả các chức năng và thủ tục đó giải quyết cùng một vấn đề, sẽ rất tuyệt nếu đặt tất cả chúng vào một gói .