自己在學習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