oracle存储过程demo分享

–1.定义存储过程

–定义

create or replace procedure proc01

as n int;         –注意定义变量后面要加分号

begin

  select count(*) into n from emp;

  dbms_output.put_line(‘员工表中有’||n||’条记录!’);

end;

–调用

declare

begin

  proc01();

end;

–2.带参数的存储过程

–定义

create or replace procedure p3(j1 varchar2)

as

cursor c1 is select * from emp where job=j1;

emper emp%rowtype;

begin

  open c1;  

  loop

    fetch c1 into emper;

    exit when c1%notfound;

    dbms_output.put_line(emper.ename);

  end loop;

  close c1;

end;

–调用

declare

begin

  p3(‘clerk’);

end;

–带有输入,输出参数的过程

create or replace procedure p4(a in int,b in int,c out int)

as

begin

  c:=0;           –给c赋初始值

  for i in a..b

    loop

    c:=c+i;       –累加

    end loop;

end;

–调用

declare

    a int:=1;

    b int:=100;

    c int;

begin

  p4(a,b,c);      –调用

  dbms_output.put_line(c);

end;

–求给定数字的阶乘(带输入和输出参数)

create or replace procedure p5(a in int,b out int)

as

begin

  b:=1;

  for i in 1..a   –a的阶乘

    loop

      b:=b*i;

    end loop;

end;

–调用

declare

    a int:=5;

    b int;

begin

  p5(a,b);

  dbms_output.put_line(b);

end;

–求给定数字的阶乘(又是输入又是输出参数)(借助了b这个中间参数)

create or replace procedure p6(a in out int)

as

       b int;

begin

  b:=a;  –把a的值赋值给b

  a:=1;  –将a的值修改为1

  for i in 1..b      –循环

    loop

      a:=a*i;

    end loop;

end;

–调用

declare

    a int:=6;

begin

  p6(a);

  dbms_output.put_line(a);

end;

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐