存储过程
也称为过程
存储过程定义:
语法:
Create [or replace] procedure proc_name
[(para_name [in | out | in out] type
para_name [in | out | in out] type
[,…..])]
is | as
声明部分
变量1 INTEGER :=0;
变量2 DATE;
BEGIN
执行部分;
EXCEPTION
异常处理部分
end proc_name;
说明:
u 每个参数写法:参数名,属性,类型
u Create [or replace]》》》》如果存在就替换,不存在就创建。
u 命名规范:pro_myname
例子:
create or replace procedure pro_emp (v_no in emp.empno%type,v_name out emp.ename%type,v_sal out emp.sal%type)
is
e_sal_error exception;
begin
select ename,sal into v_name,v_sal from emp
where empno=v_no;
if v_sal>2500 then
dbms_output.put_line('soijdiofj'||v_sal);
raise e_sal_error;
end if;
exception
when no_data_found then
dbms_output.put_line('no_data_found >>>'||v_no);
when e_sal_error then
dbms_output.put_line('e_sal_error>>>>>');
end pro_emp;
执行存储过程
--在pl/sql中
declare
v_a1 emp.ename%type;
v_a2 emp.sal%type;
begin
--这里采取名称表示法(区别于位置表示法)
query_emp(v_no=>5678,v_name=>v_a1,v_sal=>v_a2);
end;
declare
v_name emp.ename%type ;
v_sal emp.job%type;
v_no emp.empno%type;
begin
--22222 pro_emp(7698,v_name,v_sal);
---33333 pro_emp(v_no=>7698,v_sal=>v_sal,v_name=>v_name);
dbms_output.put_line('Ãû×Ö£º'||v_name);
end;
说明:省略符号“=>” ,那么参数顺序和定义一致,不省略的话,可以随便一个顺序。
查看
Select text from user_source where name='QUERY_EMP';
select text from user_source where name='PRO_EMP';
注意:存储过程名称要大写
删除
--删除存储过程
Drop procedure query_emp;