/*
 存储过程
  一.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;

 

版权声明:本文为ZXF6原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ZXF6/p/11228377.html