如何使用 x 个输入参数和 input/ouput 个 x 个参数组合编写一个 PL/SQL 过程
How to write a PL/SQL procedure with x input parameters and input/ouput of x parameters combined
我必须创建一个程序,自动创建一个 STUDENT_ID,输入参数为 [=26] =]姓名,姓氏,性别,Date_Birth,州。
示例:
- 姓名:约翰
- 姓氏:史密斯
- 性别:男
- 出生日期:17/05/1996
- 州:加利福尼亚州
输出:
STUDENT_ID is : JHN-STH-M-17596-CLFN
我放“-”是为了让它在问题中看得更清楚,但在输出中它应该是 JHNSTHM17596CLFN
我已经制作了 5 个单独的程序来计算名字、姓氏等。
我想编写一个程序来计算 STUDENT_ID 使用我制作的程序(按顺序),并且还有一个“ input" 参数和 input/output "student" 将“打印” 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 参数,这样它们才能 return 他们计算的结果。那只不过是一个函数
- 向他们每个人传递信息
- 得到结果
- 将 个结果片段连接成最终的
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;
最后,由于所有这些函数和过程都处理相同的问题,因此最好将它们全部放入一个 包。
我必须创建一个程序,自动创建一个 STUDENT_ID,输入参数为 [=26] =]姓名,姓氏,性别,Date_Birth,州。
示例:
- 姓名:约翰
- 姓氏:史密斯
- 性别:男
- 出生日期:17/05/1996
- 州:加利福尼亚州
输出:
STUDENT_ID is : JHN-STH-M-17596-CLFN
我放“-”是为了让它在问题中看得更清楚,但在输出中它应该是 JHNSTHM17596CLFN
我已经制作了 5 个单独的程序来计算名字、姓氏等。 我想编写一个程序来计算 STUDENT_ID 使用我制作的程序(按顺序),并且还有一个“ input" 参数和 input/output "student" 将“打印” 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 参数,这样它们才能 return 他们计算的结果。那只不过是一个函数
- 向他们每个人传递信息
- 得到结果
- 将 个结果片段连接成最终的
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;
最后,由于所有这些函数和过程都处理相同的问题,因此最好将它们全部放入一个 包。