--存储过程输入输出参数
--1.【IN参数】
--创建存储过程:更新students表的学生年龄
create or replace procedure update_age(in_age in number)
as
begin
update students set student_age=in_age;
commit;
end;
--调用存储过程
begin
update_age(18);
commit;
end;
--查看调用存储过程后的结果
select * from students;
--结果
STUDENT_ID STUDENT_NAME STUDENT_AGE
---------- ------------ -----------
1 金瑞 18
2 钟君 18
3 王山 18
4 刘迪 18
5 钟会 18
6 张玉 18
7 柳青 18
8 胡东 18
9 商乾 18
10 周明 18
10 rows selected
--注意:如果在存储过程中尝试修改入参的值,会报错
create or replace procedure update_age(in_age in number)
as
begin
update students set student_age=in_age;
in_age:=in_age+2; --error
commit;
end;
--2.【OUT参数】
--创建存储过程:修改学生的年龄,传入参数并输出参数
create or replace procedure update_age(in_age in number,out_age out number)
as
begin
update students set student_age=in_age;
select student_age into out_age from students where student_id=1;--此处只能返回一行记录
commit;
end;
--打开服务显示
set serverout on;
--调用存储过程
declare
out_age number;
begin
update_age(25,out_age);
dbms_output.put_line(out_age);
end;
--结果
25
PL/SQL procedure successfully completed
--3.【输入输出参数IN OUT】
--交换两个数的值
create or replace procedure swap_value(param1 in out number,param2 in out number)
as
begin
declare temp number;
begin
temp:=param1;
param1:=param2;
param2:=temp;
end;
end;
/
--调用存储过程
declare
param1 number:=3;
param2 number:=4;
begin
swap_value(param1,param2);
dbms_output.put_line('param1='||param1);
dbms_output.put_line('param2='||param2);
end;
/
--结果
param1=4
param2=3
PL/SQL procedure successfully completed
--注意:1.存储过程的参数顺序不能乱;2.在创建存储过程的时候可以为参数设置默认值[value in number default 25]要放在参数末尾
oracle存储过程IN,OUT,IN OUT参数
最新推荐文章于 2024-07-27 21:50:46 发布