Oracle中PL/SQL簡介、基本文法以及資料類型

來源:互聯網
上載者:User

標籤:

Oracle中PL/SQL簡介、基本文法以及資料類型

一.PL/SQL簡介。

  Oracle PL/SQL語言(Procedural Language/SQL)是結合了結構化查詢和Oracle自身過程式控制製為一體的強大語言,PL/SQL不但支援更多的資料類型,擁有自身的變數申明,指派陳述式,而且還有條件,迴圈等流程式控制制語句。過程式控制制結構與SQL資料處理能力無縫的結合形成了強大的程式設計語言,可以建立過程和函數以及程式包。

  PL/SQL是一種塊結構的語言,它將一組語句放在一個塊中,一次性的發送給伺服器,由伺服器和自身引擎兩個執行器執行代碼。如:

  

  優點:

  • 支援SQL

    SQL是訪問資料庫的標準語言,通過SQL命令,使用者可以操縱資料庫的資料。PL/SQL支援所有的SQL資料操縱命令、遊標控制命令、事務控制命令、SQL函數、運算子和偽列。

  同時PL/SQL和SQL語言緊密整合,PL/SQL支援所有的SQL資料類型和NULL值。

  • 支援物件導向編程

    PL/SQL支援物件導向的編程,在PL/SQL中可以建立類型,可以對類型進行繼承,可以在子程式中重載方法等。

  • 更好的效能

    SQL是非過程語言,只能一條一條的執行,而PL/SQL把一個PL/SQL統一進行編譯後執行,同時還可以把編譯好的PL/SQLBlock Storage起來,以備重用,減少了應用程式和伺服器之間的通      信時間,所以PL/SQL是高效而快速的。

  • 可移植性

    使用PL/SQL編寫的應用程式語言,可以移植到任何操作平台的ORACLE伺服器,同時還可以編寫可移植程式庫,在不同環境中使用。

  • 安全性

     可以通過預存程序對客戶機和伺服器之間的應用程式邏輯進行分割,這樣可以限制對ORACLE資料庫的訪問,資料庫還可以授權和撤銷其他使用者的訪問權利。

二.PL/SQL基本文法。

  PL/SQL是一種塊結構的語言。一個PL/SQL包含了一個或多個邏輯快,邏輯塊中可以聲明變數、寫程式主體、還可以捕獲異常和異常處理。每個邏輯快分為三個部分,文法結構如下:

    PL/SQL的文法結構

 

  [DECLARE

      --declaration statements]                變數或常量聲明部分。可選。

  BEGIN

      --executable statements         執行部分。BEGIN開始,END結束(加;號)。必須寫。

  [EXCEPTION

      --exception statements]         異常處理部分。可選。作用於java中異常的作用和機制都一樣。

  END;

  注意:

  • LP/SQL是一種程式設計語言,有自己專屬的資料類型,變數聲明和賦值以及流程式控制制語句。
  • 對大小寫不敏感,但是為了規範:關鍵字全部大寫,其餘部分小寫。
  • 每一條語句以分號結束。

    PL/SQL特殊符號說明:

  

三.變數和常量。

  聲明變數:

  變數名 資料類型[:=初始值];

DECLAREa int;BEGIN select MGR into a from emp where empno=7369;END;

  變數名 資料類型 DEFAULT 初始值;

DECLAREb int default 0;BEGIN select MGR into b from emp where empno=7369;END;

  聲明普通常量:

  常量名 CONSTANT 資料類型 :=常量值;

set serveroutput on;  --設定向控制台輸出DECLAREc CONSTANT int:=666;BEGIN dbms_output.put_line(c);END;

四.PL/SQL資料類型。

  • 純量資料型別  

    前面在建表時,學習過Oracle SQL的資料類型,PL/SQL不但支援這些資料類型,還具備自身的資料類型。如:

  

  

  • 屬性資料類型

    當聲明一個變數的值是資料庫的一行或者是資料庫的某列時,可以直接使用屬性類型來聲明。ORACLE有兩種屬性資料類型:%TYPE和%ROWTYPE

    %ROWTYPE

      引用資料庫表中的一行作為資料類型,可以使用" . " 來訪問記錄中的屬性。

      執行個體:

set serveroutput on;                                      結果:
                                                  DECLARE                                                    EMPNO ENAME SAL myrow EMP%ROWTYPE;                                             7369 SMITH 800BEGIN select * into myrow from emp where empno=7369; dbms_output.put_line(‘EMPNO ENAME SAL‘); dbms_output.put_line(myrow.empno||‘ ‘||myrow.ename||‘ ‘||myrow.sal); END;

    %TYPE

      引用某個變數或者資料庫的列的類型作為某變數的資料類型。

      執行個體:

set serveroutput on;DECLARE                                              說明:  sal emp.sal%TYPE;                          mytype NUMBER(4):=1000;                                          定義sal的資料類型為emp表中sal的資料類型。  sumsal mytype%TYPE;BEGIN  select SAL into sal from emp where empno=7499;                             定義sumsal的資料類型為mytype的資料類型。  sumsal:=sal+mytype;  dbms_output.put_line(sumsal);END;  

 

Oracle中PL/SQL簡介、基本文法以及資料類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.