增長數據獨立性。與視圖的效果類似,利用存儲過程能夠把數據庫基礎數據和程序(或用戶)隔離開來,當基礎數據的結構發生變化時,能夠修改存儲過程,這樣對程序來講基礎數據的變化是不可見的,也就不須要修改程序代碼了。mysql
簡化複雜的操做。存儲過程能夠把須要執行的多條SQL語句封裝到一個獨立單元中,用戶只需調用這個單元就能達到目的。這樣就實現了一人編寫多人調用。面試
提升性能。完成一項複雜的功能可能須要多條SQL語句,同時SQL每次執行都須要編譯,而存儲過程能夠包含多條SQL語句,並且建立後只須要編譯一次,之後就能夠直接調用。sql
變量聲明塊:緊跟着的as (is )關鍵字,能夠理解爲pl/sql的declare關鍵字,用於聲明變量。 變量聲明塊用於聲明該存儲過程須要用到的變量,它的做用域爲該存儲過程。另外這裏聲明的變量必須指定寬度。數據庫
過程語句塊:從begin 關鍵字開始爲過程的語句塊。存儲過程的具體邏輯在這裏來實現。編程
異常處理塊:關鍵字爲exception ,爲處理語句產生的異常。該部分爲可選 。服務器
結束塊:由end關鍵字結束。編程語言
存儲過程的參數傳遞方式 : - 存儲過程的參數傳遞有三種方式:IN,OUT,IN OUT . - IN 按值傳遞,而且它不容許在存儲過程當中被從新賦值。若是存儲過程的參數沒有指定存參數傳遞類型,默認爲IN 工具
create or replace procedure proc1(
p_para1 varchar2,
p_para2 out varchar2,
p_para3 in out varchar2
)as
v_name varchar2(20);
begin
p_para1 :='aaa';
p_para2 :='bbb';
v_name := '張三丰';
p_para3 := v_name;
dbms_output.put_line('p_para3:'||p_para3);
null;
end;
複製代碼
OUT 參數:做爲輸出參數,須要注意,當一個參數被指定爲OUT類型時,就算在調用存儲過程以前對該參數進行了賦值,在存儲過程當中該參數的值仍然是NULL.性能
IN OUT 是真正的按引用傳遞參數。便可做爲傳入參數也能夠做爲傳出參數。spa