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;