如何编写具有 x 个输入参数和 x 个参数的输入/输出组合的 PL/SQL 过程

问题描述

我必须制定一个程序来自动创建一个STUDENT_ID,输入参数为姓名、姓氏、性别、日期_出生、州.

示例:

  • 姓名:约翰
  • 姓氏:史密斯
  • 性别:男
  • 出生日期:17/05/1996
  • 州:加利福尼亚

输出

STUDENT_ID is : JHN-STH-M-17596-CLFN

我在问题中加了“-”以使其更好看,但在输出中它应该是 JHNSTHM17596CLFN

我制作了 5 个单独的程序来计算姓名、姓氏等。 我想编写一个程序来计算 STUDENT_ID 使用我制作的程序(按顺序),并且还有一个“输入”参数和输入/输出“学生”这将“打印”STUDENT_ID

procedure  student_id     (surname in varchar2,name in varchar2,gender in varchar2,date_birth in varchar2,state in varchar2) is
begin

....


dbms_output.put_line ('Student_ID is :');

这段代码“应该”是输入参数,不知道写对了没

解决方法

在我看来,好像

  • 您应该将计算 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;  

最后,由于所有这些函数和过程都处理相同的问题,最好将它们全部放入一个