Oracle中PL/SQL簡介、基本語法以及數據類型


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/SQL塊存儲起來,以備重用,減少了應用程序和服務器之間的通      信時間,所以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特殊符號說明:

  

三.變量和常量。

  聲明變量:

  變量名 數據類型[:=初始值];

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

  變量名 數據類型 DEFAULT 初始值;

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

  聲明普通常量:

  常量名 CONSTANT 數據類型 :=常量值;

set serveroutput on;  --設置向控制台輸出
DECLARE
c 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 800 BEGIN 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;
  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM