/*
存储过程
一.oracel存储过程
1、没有返回值 return 值;
2、用输出参数来代替返回值;
3、输出参数可以有多个
二.参数的传递方式
1. 按位置传递
2. 按名字传递
3.混合传递 --按照位置传递,再按照名字传递
*/
select * from emp;
call re4(3,4);
create or replace procedure re6 (
id1 in number,
id2 in number,
name1 in emp.ename%type,
name2 in emp.ename%type,
n1 out number -- 需要返回一个参数么?
)
as
begin
insert into emp (empno,ename,sal) values (id1,name1,5000);
insert into emp (empno,ename,sal) values (id2,name2,5000);
commit;
select count(*) into n1 from emp;
end;
declare
v_count number(2);-- oracle 没有返回值 用输出参数来定义。
begin
re6(1,2,'haha','xixi',v_count);
dbms_output.put_line('总记录数'||v_count);
end;
-- 1. 按位置传递
declare
v_count number(2);
begin
re6(3,4,'jiji','baba',v_count); -- 1. 按位置传递
dbms_output.put_line(v_count);
end;
-- 2.名字传递参数 无序
declare
v_count number(2);
begin -- 2.名字传递参数 无序
re6(name1=>'张三',name2=>'李四',id1=>8,id2=>9, n1=>v_count);
dbms_output.put_line(v_count);
end;
select *from emp;
call re4(1,2);
call re4(3,4);
-- 混合传递
declare
v_count number(2);
begin
re6(1,2,name1=>'狼王',name2=>'兔子',n1=>v_count); --按照位置传递,再按照名字传递
dbms_output.put_line('总数量:'||v_count);
end;
select * from emp;