oracle 存储过程

--向表中插入一条记录
create or replace procedure pro_insertDept
is
begin
  insert into scott.dept values('77','dog','dog');
  commit;
  end pro_insertDept;
--执行
begin
  pro_insertDept;
  end;
--定义三个输入参数,插入一条记录
create or replace procedure pro_InsetIn
(num_deptno in number,
var_ename in varchar2,
var_loc in varchar2) 
is 
begin
  insert into scott.dept values(num_deptno,var_ename,var_loc);
  commit;
  end pro_InsetIn;
  ----------------------------------------
  begin
    pro_InsetIn(83,'dog88','dog88');
    end;
--定义out参数
create or replace procedure pro_selectdept
(
num_deptno in number,
var_dname out scott.dept.dname%type,
var_loc out scott.dept.loc%type
)
is 
begin
  select dname,loc into var_dname,var_loc
  from scott.dept where scott.dept.deptno=num_deptno;
  end pro_selectdept;
  -------------------------------------
  declare
  var_dname scott.dept.dname%type;
  var_loc scott.dept.loc%type;
  begin
    pro_selectdept(4,var_dname,var_loc);
    dbms_output.put_line(var_dname);
    end;
    
--in out 参数
create or replace procedure pro_square(
num in out number,
flag in boolean
)
is 
i int:=2;
begin
  if flag then
    num:=power(num,i);
    else
      num:=sqrt(num);
      end if;
      end;
------------------------------
declare
num number:=20;
flag boolean:=false;
begin
  pro_square(num,true);
  dbms_output.put_line(num);
  end;
--in 参数的默认值
create or replace procedure inser_deptDefault
(
       num_deptno in number,
       var_dname in scott.dept.dname%type default 'dog2017923'
)
is
begin
  insert into scott.dept(deptno,dname) values(num_deptno,var_dname);
  commit;
  end;
 ---------------------
 begin
   inser_deptDefault(47);
   end;
--指定参数名称传递参数(存储过程定义的参数)
declare 
row_dept scott.dept%rowtype;
begin
  inser_deptDefault(41,var_dname=>'dog2222222');
  select *  into row_dept from scott.dept where deptno=41;
  dbms_output.put_line(row_dept.dname);
end;










 
    
    select * from scott.dept

 

posted on 2017-09-23 12:11  苹果园dog  阅读(202)  评论(0编辑  收藏  举报

导航