我在这就不啰嗦存储过程理论内容了,直接上干货,通过三个简单的例子理解存储过程,如果对PL/SQL编程比较了解的话,存储过程就很容易了。
使用存储过程显示所有dept的信息
create or replace procedure proc_1
is
cursor cur_dept is select * from dept;
begin
for rec_dept in cur_dept
loop
dbms_output.put_line(rec_dept.dname);
end loop;
end;
/
//执行方法1
exec proc_1;
//执行方法2
begin
proc_1;
end;
/
无参存储过程也是最简单的
使用存储过程按照部门号(deptno)查找部门名(dname)
方法1
create or replace procedure proc_2(v_deptno dept.deptno%type)
is
v_dname dept.dname%type;
begin
select dname into v_dname from dept where deptno = v_deptno;
dbms_output.put_line(v_dname);
end;
/
//执行方法1
exec proc_2(10);
//执行方法2
begin
proc_2(10);
end;
/
相比于第一个例子只是添加了一个参数
方法2
create or replace procedure proc_3(v_deptno dept.deptno%type,
v_dname out dept.dname%type)
is
begin
select dname into v_dname from dept where deptno = v_deptno;
end;
/
//执行方法
declare
v_dname dept.dname%type;
begin
proc_3(10,v_dname);
dbms_output.put_line(v_dname);
end;
/
这里最需要注意的地方是参数后out,参数类型有in,out,默认为in。为了方便理解可以将in看作值传递,out看作地址传递