什么是存儲過程?
存儲過程是一種命名的PL/SQL程序塊,它是由一些T-SQL語句組成的代碼塊,這些T-SQL語句代碼像一個方法一樣實現一些功能(對單表或多表的增刪改查),可以有參數、輸入輸出參數,通常沒有返回值。不可以直接被SQL語句調用或執行,只能通過EXECUTE命令執行或在PL/SQL程序塊內部被調用。
存儲過程的優點
1.一般的T-SQL語句是每次執行都要編譯一次,然而存儲過程是一個編譯過的代碼塊,可以不用再編譯直接調用,所以執行效率比T-SQL語句高。
2.一個存儲過程在程序在網絡中交互時可以替代一大堆的T-SQL語句,所以也能降低網絡的通信量(流量),提高通信速率。
3.當數據庫進行復雜操作時(如對多表進行Update、Insert、Query、Delete時),可將此復雜作用存儲過程封裝起來與數據庫提供的事務處理結合一起使用。
4.存儲過程代碼精簡一致,可以重復使用。
5.安全性高,可設定只有某用戶才具有對指定存儲過程的使用權。
存儲過程的創建
基本語法:create [or replace] procedure pro_name[(parameter1[,parameter2]...)] is|as
begin
plsql_sentence;
[exception]
[dowith_sentence;]
end [pro_name];
● pro_name:存儲過程名稱,如果數據已經存在此名稱,則可以指定“or replace”關鍵字,這樣新的存儲過程將覆蓋原來的存儲過程。
● parameter1:存儲過程的參數,輸入參數需在后指定“in”關鍵字,輸出參數需在后指定“out”關鍵字。參數類型不能指定長度。
● plsql_sentences:PL/SQL語句,它是存儲過程功能實現的主體。
● dowith_sentences: 異常處理語句,也是PL/SQL語句,在代碼中拋異常用 raise+異常名,這是一個可選擇項。
注意:"parameter1"是存儲過程被調用或執行時用到的參數,而不是存儲過程內定義的內部變量。內部變量要在"is|as"關鍵字后面定義,并使用分號(;)結束。
存儲過程的調用
execute procedure_name --存儲過程如果有參數,后面加參數格式為:@參數名=value,也可直接為參數值value.
存儲過程的刪除
drop procedure procedure_name --在存儲過程中能調用另外一個存儲過程,而不能刪除另外一個存儲過程