天天看點

Oracle之PL/SQL學習筆記 編寫控制結構三:複合類型編寫遊标

 自己在學習Oracle是做的筆記及實驗代碼記錄,内容挺全的,也挺詳細,發篇博文分享給需要的朋友,共有1w多字的學習筆記吧。是以前做的,一直在壓箱底,今天拿出來整理了一下,給大家分享,有不足之處還望大家批評指正。

  PL/SQL定義:PL/SQL是由Oracle開發,專門用于Oracle的程式設計語言。 PL---Procedural Language. SQL—Structure QueryLanguage。PL/SQL包括過程化語句和SQL語句

    PL/SQL的機關:塊。 一個塊中可以嵌套子塊。

    塊的三個組成部分:

        一:定義部分(declare)

PL/SQL中使用的變量,常量,遊标和異常的名字都必須先定義後使用。并且定義在以declare關鍵字開頭的定義部分

        二:可執行部分:(begin)

是PL/SQL的主題,包含該塊的可執行語句,該部分定義了塊的功能,是必須的部分。由關鍵字begin開始,end結束

        三:異常處理部分:(exception)

             該部分以exception開始,以end結束

PL/SQL的優點:

  1、    改善了性能:PL/SQL把整個語句塊發送給伺服器,這個過程在單次調用中完成,降低了網絡擁擠

  2、    可重用性:隻要有Oracle的地方都能運作

  3、    子產品化:程式中的每一塊都實作一個邏輯操作,有效的進行了分割。

PL/SQL塊的類:

  1、    匿名塊:隻能存儲一次,不能存儲在資料庫中

  2、    過程,函數和包(procedure,function,package):是命了名的PL/SQL塊,被存儲在資料庫中,可以被多次使用,可以用外部程式顯示執行。

  3、    觸發器:是命名的PL/SQL塊,被存儲在資料庫中,當觸發某事件時自動執行。

PL/SQL中變量的命名規範:

  1、    至多有30個字元

  2、    不能是保留字

  3、    必須以字母開頭

  4、    不允許和資料庫中表的列名相同

  5、    不可包括$,_和數字以外的字元

PL/SQL中的變量

  1、    PL/SQL變量

    a)  标量型:隻能存放單一值

    b)  複合型

    c)   引用型

    d)  LOBx型:存放大資料

  2、    定義變量文法

    a)  變量名   變量類型   :=  變量值

    b)  V_number NUMBER(2) NOT NULL :=20;

    c)   常量的定義

               i.       V_number CONSTANT

          NUMBER(2,3) :=20.098;

%TYPE屬性:

通過%TYPE聲明一個變量,實際上就是參照變量或表中的字段的類型作為變量的類型,并且保持同步。

變量将遵循下面的類型聲明:

  1.  已聲明過的變量類型

  2.  資料庫中表字段的類型

demo1:

demo2:

-從部門表中找到最大的部門号,将其輸出到螢幕

demo3:

demo4:

--選擇并列印emp表中薪水總和

demo5:事務的操作

  1、    條件分支語句

    a)  IF語句:  

 i.      – IF – THEN – END IF

 ii.      – IF – THEN – ELSE – END IF

 iii.      – IF – THEN – ELSEIF – END IF

  2、    條件語句文法

    a)  IF condition THEN

      i.      Statement;

    b)  [ELSIF condition THEN

      i.      Statement;]

    c)  [ELSE

    d)  ENDIF;

  3、    DEMO:

    a)  IF v_name = ‘SCOTT’ AND SAL >= 3000   THEN

      i.      v_dept :=20;

    b)  END IF;

  4.Case語句:文法(有傳回值的)

  

5、    循環語句LOOP :

DEMO:循環插入11條資料

b)  FOR LOOP循環

b)  WHILE LOOP

  1、    複合資料類型

    a)  一個複合變量可以存放多個值

    b)  複合變量建立後可以多次使用

    c)  如同枚舉類型和數組

  2、    PL/SQL記錄

    a)  每個記錄内都有很多的不同類型的字段

    b)  無初始值的字段為NULL

    c)  Record 類型聲明使用者自定義的類型

  3、    定義一個記錄

    a)  文法:

b)  DEMO

5  記錄的另一種定義:表名%ROWTYPE

  a)  Exp_row table_name%ROWTYPE

  DEMO:

  1、    遊标的定義:遊标是Oracle在資料庫中開辟的一個工作區,用來存放SELECT語句查詢的結果。

  2、    遊标的分類

    a)  隐式遊标:PL/SQL隐式建立并管理這一遊标。

    b)  顯示遊标:由程式員定義并控制,從資料庫中讀出多行資料,并從多行資料中一行一行的處理。

  3、    遊标的聲明:

    a)  文法:CURSOR cursor_name IS select_statement;

    b)  在遊标聲明中SELECT語句不能使用INTO語句,可以在字句子中使用ORDER字句。

  c)  Demo:

  4、    打開遊标

    a)  文法:OPEN cursor_name;

    b)  使用遊标之前應打開遊标

    c)  打開遊标實際上是執行定義遊标時的SELECT語句,将查詢結果檢索到工作區中。

    d)  如果沒有要傳回的行沒有異常

  5、    從遊标中提取數值

    a)  文法

       i.      FETCH cursor_name INTO [v1,v2……]|record_name]

    b)  在使用FETCH時先把遊标打開,不然沒法使用。

    c)  對遊标第一次使用FETCH時,遊标指向的是第一條記錄,使用後遊标指向下一條記錄。

    d)  遊标隻能向下移動不能回退,如果想回退到上一條記錄,隻有把遊标關閉後在打開。

    e)  INTO字句中的變量個數、順序、資料類型必須和工作區中的保持一緻;

  6、    關閉遊标

    a)  文法:CLOSE cursor_name

    b)  處理完資料後必須關閉遊标,如果需要可以再次打開遊标,遊标一旦關閉不可再從遊标中提取資料,當關閉遊标後所有和遊标相關的資源都會被關閉。

  7.遊标的使用Demo