oracle 传参方式 位置传参 命名传参

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

发布了31 篇原创文章 · 获赞 1 · 访问量 1829

猜你喜欢

转载自blog.csdn.net/liangdingguo/article/details/104612468