想靠Oracle拿高薪,存儲過程的優勢你是否搞清楚了?

  • 除了平常的mysql,相信你們都知道Oracle因爲其存在的時間之長,也是許多大廠的選擇。而且在平常的面試中,熟知Oracle與本來在面試中也是擁有極大的優點。而今天我們就來講說Oracle中的存儲過程。

存儲過程是Oracle開發者在數據轉換或查詢報表時常常使用的方式之一。

  • 咱們都知道,它就是想編程語言同樣一旦運行成功,在平常的使用中就能夠被用戶隨時調用,這種方式極大的節省了用戶的時間,也提升了程序的執行效率。存儲過程在數據庫開發中使用比較頻繁,它有着普通SQL語句不可替代的做用。
  • 所謂存儲過程,就是一段存儲在數據庫中執行某種功能的程序。其中包含一條或多條SQL語句,可是它的定義方式和PL/SQL中的塊、包等有所區別。存儲過程能夠通俗地理解爲是存儲在數據庫服務器中的封裝了一段或多段SQL語句的PL/SQL代碼塊。
  • 在數據庫中有一些是系統默認的存儲過程,那麼能夠直接經過存儲過程的名稱進行調用。另外,存儲過程還能夠在編程語言中調用,如Java、C#等。

存儲過程的優勢:

  • 增長數據獨立性。與視圖的效果類似,利用存儲過程能夠把數據庫基礎數據和程序(或用戶)隔離開來,當基礎數據的結構發生變化時,能夠修改存儲過程,這樣對程序來講基礎數據的變化是不可見的,也就不須要修改程序代碼了。mysql

  • 簡化複雜的操做。存儲過程能夠把須要執行的多條SQL語句封裝到一個獨立單元中,用戶只需調用這個單元就能達到目的。這樣就實現了一人編寫多人調用。面試

  • 提升性能。完成一項複雜的功能可能須要多條SQL語句,同時SQL每次執行都須要編譯,而存儲過程能夠包含多條SQL語句,並且建立後只須要編譯一次,之後就能夠直接調用。sql

存儲過程的語法:

  • 建立語句:create or replace procedure 存儲過程名。若是沒有or replace語句,則僅僅是新建一個存儲過程。若是系統存在該存儲過程,則會報錯。Create or replace procedure 若是系統中沒有此存儲過程就新建一個,若是系統中有此存儲過程則把原來刪除掉,從新建立一個存儲過程。
  • 存儲過程名定義:包括存儲過程名和參數列表。參數名和參數類型。參數名不能重複。參數的數據類型只須要指明類型名便可,不須要指定寬度。 參數的寬度由外部調用者決定。 存儲過程能夠有參數,也能夠沒有參數。
  • 變量聲明塊:緊跟着的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

總結:

做爲一個新生程序猿,Damon但願可以與你們一同進步。文章或者描述有所不足的地方,但願你們多多提出來,一同進步。

Damon會繼續發掘一些有用的諮詢,知識以及新工具,與你們一同分享,謝謝!

相關文章
相關標籤/搜索