1.在Oracle中,存储过程包括三部分组成:定义部分、执行部分、和异常处理部分(即例外)
eg1:输入员工编号,查询员工的姓名和薪资
create or repalce procedure mypro2 is
declare --定义部分,定义变量和常量等,变量定义一般以V_开头,常量定义一般以C_开头
v_ename varchar2(20);
v_sal number(7,2);
begin--执行部分
select ename,sal into v_ename,v_sal from emp where empno=&no;
dbms_output.put_line('员工的姓名是:'||v_ename||'工资是'||v_sal);
exception--异常处理部分
when no_data_found then
dbms_output.put_line('您输入的员工编号不存在');
end;
eg2:带参数的存储过程
--输入员工的姓名和新的薪资,根据姓名改薪资
create or replace procedure mypro2(pename varchar2,psal number) is
begin
update emp set sal=psal where ename=pename;
end;
存储过程的调用方法:
a:exec mypro1()或者call mypro1();
b:exec mypro1('SCOTT',1200)或者call mypro1('SCOTT',1200);
2.函数
函数必须有返回值的
结构如下:根据雇员名称求年薪
create or repalce function myfun1(fename varchar2) return number is yearsal nunber;
begin
select sal*12+nvl(comm,0) into yearsal from emp where ename=fename;
return yearsal;
end;
函数的调用方法:
SQL> var ys number;
SQL> call myf1('SCOTT') into:ys;