存儲過程是一組為了完成特定功能的sql語句集,是一段sql代碼片段,經編譯后存儲在數據庫中,用戶通過指定存儲過程的名字並給出參數(如果存儲過程存在參就給出,不存在就不用給出參數)來執行它。因為它是一段sql語句代碼並且已經編譯好了存放在數據庫中,所以它的執行效率非常高。
存儲過程的創建如下:
create [or replace] procedure 過程名 [(參數名 in|out 數據類型)]
as|is
變量的聲明
begin
plsql的子程序體;
end;//如果是is,end 后面要加上過程名。
存儲過程的調用
第一種:call 存儲過程名(參數);
第二種:begin
存儲過程名(參數);
end;
例如1:給指定的員工漲工資100,並打印出漲前和漲后的工資
創建存儲過程:
create or replace procedure addsal(eno in number) is
pemp emp%rowtype;
begin
select * into pemp from emp where empno = eno;
update emp set sal = sal + 100 where empno = eno;
dbms_output.put_line('ename:' || pemp.ename || 'after' || (pemp.sal+100));
end addsal;
調用存儲過程:
第一種調用:call addsal(7369);
第二種調用:
begin
addsal(eno=>7369);
commit;//因為oracle數據庫是手動提交的,所有涉及到的增刪改都必須commit;
end;
例如2:輸出所有員工的姓名和工資
創建存儲過程:
create or replace procedure infoemp as
cursor allemp is
select * from emp;//創建一個游標
enemp emp%rowtype;
begin
open allemp;
loop
fetch allemp
into enemp;//利用循環從游標中取數據
dbms_output.put_line(enemp.ename || ' '||enemp.sal);
exit when allemp%notfound;//退出循環條件
end loop;
close allemp;
end;
調用存儲過程:
第一種: call infoemp();
第二種: begin
infoemp();
end;
以上就是oracle數據庫的存儲過程的基本知識和用法。