Oracle資料庫教程:PL/SQL筆記

來源:互聯網
上載者:User

  1. create table myinfo (myname varchar2(10),passwd varchar(10));  
基於以上表myinfo

PL/SQL(procedural language/sql):是Oracle基於標準SQL語言的擴充,在PL/SQL中你可以嵌套sql語句、定義變數、定義常量、使用邏輯語句(條件陳述式,迴圈語句等)、使用例外處理各種錯誤(例外(EXCEPTION)是一種PL/SQL標識符。如果運行PL/SQL塊時出現錯誤或警告,則會觸發例外,當觸發例外時,預設情況下會終止PL/SQL塊的執行,通過在PL/SQL塊中引入例外處理部分。可以捕捉各種例外,並根據例外出現的情況進行相應的處理。類似java中的try catch),既然是擴充,當然會使得他的功能更加強大!

PL/SQL是強大的資料庫過程語言!

重要的是:重要的是PL/SQL緊密的結合在Oracle資料庫裡面。

PL/SQL是Oracle資料庫使用的三種語言的其中之一,另外兩個是SQL和Java。

功能近似PL/SQL的程式語言和其他關係型資料庫:Sybase ASE、Microsoft SQL Server的Transact-SQL,PostgreSQL資料庫的PL/pgSQL(模仿PL/SQL)和IBM DB2的SQL PL[1],都符合ISO SQL的SQL/PSM標準。

---------------------------------------------------------------------------------------------------

pl/sql的優點:

提高應用程式的運行效能、模組化設計、減少網路傳輸量、提高安全性

(傳統的資料庫操作,我們想想:SQL語句寫在java程式訪問資料庫,首先獲得串連,編譯SQL語句,使得資料庫能夠認識你的SQL語句,這裡每次編譯就浪費了一些時間,當資料訪問量很大的時候,你的程式效能就比較差了!這裡如果我們把某些操作寫為一個過程,比如分頁、轉賬過程(功能劃分為一個模組,由專人負責維護……)。就可以使得我們的程式效能大大提高,從而資料庫操作作為一個模組,當java程式調用時就是調用已經編譯的SQL語句,所以在進行程式最佳化時可以考慮用預存程序進行最佳化。)

【當然還有其他有點好處,歡迎補充】

缺點:

當需要換資料庫時,移植性存在缺陷

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||


PL/SQL編寫規範:

A:

單行注釋:--

多行注釋:/*……*/

B:

標識符的命名規範:

a.定義變數,建議用v_作為首碼, 例:v_sale

b.定義常量,建議用c_作為首碼,例:c_rate

c.定義遊標,建議用_cursor作為尾碼例:emp_cursor

d.定義例外,建議用e_作為首碼例:e_error

-----------------------------------------------------------------------------------

PL/SQL是以塊為基本單位,塊分類{主要有預存程序,函數,觸發器,包}

塊(block)的介紹:

上面說了,PL/SQL是以塊為基本單位,,我們編寫PL/SQL就是在編寫塊,簡單的應用功能,我們可能只需要一個PL/SQL塊就可以實現,複雜的功能就需要多個塊了,塊可以嵌套。

塊由三部分組成:{定義部分、執行部分、例外處理部分},即:

declare (可選)

/*聲明部分---定義常量、變數。遊標、例外、複雜資料類型*/

begin (必須滴)

/*執行部分---需要執行的pl/sql語句和SQL語句*/

exception(可選的)

/*處理啟動並執行各種錯誤*/

end;(必須滴)

編寫一個簡單的塊先:

例子,

  1. set serveroutput on; --開啟輸出選項   
  2.   
  3. begin   
  4. dbms_output.put_line('hello,world'); --輸出 hello world   
  5. end;  
  6. /  
例子,
  1. declare   
  2. v_name varchar2(10); --定義變數   
  3. begin   
  4. select myname into v_name where passwd=&pswd;  
  5. dbms_output.put_line('這是字串拼接:'||v_name);  
  6. end;  
  7. /  
例子,外加顯示密碼:
  1. declare   
  2. v_name varchar2(10); --定義變數   
  3. v_psw varchar2(10);   
  4. begin   
  5. select myname,passwd into v_name,v_psw where passwd=&psw;  
  6. dbms_output.put_line('這是字串拼接:'||v_name||' password is '||v_psw);  
  7. end;  
  8. /  

這裡都會彈出一個框,讓輸入就是psw的值,where passwd=&psw

例外的情況,如果查詢不到資料呢?oracle中會拋出異常,

這裡我們就可以使用例外了,Exception

  1. declare   
  2. v_name varchar2(10); --定義變數   
  3. v_psw varchar2(10);   
  4. begin   
  5. select myname,passwd into v_name,v_psw where passwd=&psw;  
  6. dbms_output.put_line('這是字串拼接:'||v_name||' password is '||v_psw);  
  7. --異常處理   
  8. exception  
  9. when no_data_found then   
  10. dbms_output.put_line('未找到匹配資料');  
  11. end;  
  12. /  
  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.