PLSQL塊結構

pl/sql(procedural language/sql)是oracle在標準的sql語言上的擴展。pl/sql不僅允許嵌入sql語言,還可以定義變量和常量,允許使用條件語句和循環語句,允許使用例外處理各種錯誤,這樣使得它的功能變得更加強大。
1. 爲什麼學pl/sql?
(1). 提高應用程序的運行性能
(2). 模塊化的設計思想 [ 分頁的過程,訂單的過程,轉賬的過程。。]
(3). 減少網絡傳輸量
(4). 提高安全性(sql會包括表名,有時還可能有密碼,傳輸的時候會泄露。PL/SQL就不會) 
2.  不好的地方
(1). 移植性不好(換數據庫就用不了)
(2). 用什麼編寫pl/sql
3.  舉一個簡單的案例
編寫一個存儲過程,該過程可以向某表中添加記錄。
(1). 創建一個簡單的表
       create table mytest(name varchar2(30),passwd varchar2(30)); 
(2). 創建過程

 

      replace:表示如果有sp_pro1,就替換 
      如何查看錯誤信息:show error; 
(3). 如何調用該過程:
      1)exec 過程名(參數值1,參數值2...); 
      2)call 過程名(參數值1,參數值2...);  
4.  pl/sql介紹 
     開發人員使用pl/sql編寫應用模塊時,不僅需要掌握sql語句的編寫方法,還要掌握pl/sql語句及語法規則。pl/sql編程可以使用變量和邏輯控制語句,從而可以編寫非常有用的功能模塊。比如:分頁存儲過程模塊、訂單處理存儲過程模塊、轉賬存儲過程模塊。而且如果使用pl/sql編程,我們可以輕鬆地完成非常複雜的查詢要求。

(1). 簡單分類
                          |————過程(存儲過程)
                          | 
                          |————函數
      塊(編程)———| 
                          |————觸發器
                          |
                          |————包

(2). 編寫規範
      a. 單行註釋 --
          select * from emp where empno=7788;  --取得員工信息 
      b. 多行註釋 /*...*/ 來劃分
(3). 標誌符號的命名規範
      1).當定義變量時,建議用v_作爲前綴v_sal 
      2).當定義常量時,建議用c_作爲前綴c_rate
      3).當定義遊標時,建議用_cursor作爲後綴emp_cursor
      4).當定義例外時,建議用e_作爲前綴e_error
5.  pl/sql塊介紹 
     塊(block)是pl/sql的基本程序單元,編寫pl/sql程序實際上就是編寫pl/sql塊,要完成相對簡單的應用功能,可能只需要編寫一個pl/sql塊,但是如果想要實現複雜的功能,可能需要在一個pl/sql塊中嵌套其它的pl/sql塊。 
pl/sql 塊由三個部分構成:定義部分,執行部分,例外處理部分。
如下所示。
declare
/*定義部分——定義常量、變量、遊標、例外、複雜數據類型*/
begin
/*執行部分——要執行的pl/sql語句和sql語句*/
exception
/*例外處理部分——處理運行的各種錯誤*/
end;
定義部分是從declare開始的,該部分是可選的;
執行部分是從begin開始的,該部分是必須的;
例外處理部分是從exception開始的,該部分是可選的。 
pl/sql塊的實例
(1). 實例1-只包括執行部分的pl/sql塊

 

  
      dbms_output是oracle所提供的包(類似java的開發包),該包包含一些過程,put_line就是dbms_output包的一個過程。  
(2). 實例2-包含定義部分和執行部分的pl/sql塊 
  
      如果要把薪水也顯示出來,那麼執行部分就應該這麼寫:
      select ename,sal into v_ename,v_sal from emp where empno=&aa;  
      & 表示要接收從控制檯輸入的變量。
(3). 實例3-包含定義部分,執行部分和例外處理部分
      爲了避免pl/sql程序的運行錯誤,提高pl/sql的健壯性,應該對可能的錯誤進行處理,這個很有必要。
1.比如在實例2中,如果輸入了不存在的僱員號,應當做例外處理。
2.有時出現異常,希望用另外的邏輯處理,[網示] 
相關說明:
oracle事先預定義了一些例外,no_data_found就是找不到數據的例外。 

發佈了86 篇原創文章 · 獲贊 1 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章