–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;