結構化查詢語言(Structured Query Language簡稱SQL)是用來訪問關系型數據庫一種通用語言屬於第四代語言(GL)其執行特點是非過程化即不用指明執行的具體方法和途徑而是簡單地調用相應語句來直接取得結果即可顯然這種不關注任何實現細節的語言對於開發者來說有著極大的便利然而有些復雜的業務流程要求相應的程序來描述這種情況下GL就有些無能為力了Oracle L/SQL的出現正是為了解決這一問題Oracle PL/SQL是一種過程化語言屬於第三代語言它與CC++Java等語言一樣關注於處理細節可以用來實現比較復雜的業務邏輯
一編程基礎知識
程序結構
Oracle PL/SQL程序都是以塊(block)為基本單位整個Oracle PL/SQL塊分三部分聲明部分(用declare開頭)執行部分(以 begin開頭)和異常處理部分(以exception開頭)其中執行部分是必須的其他兩個部分可選無論Oracle PL/SQL程序段的代碼量有多大其基本結構就是由這三部分組成
控制結構
Oracle PL/SQL程序段中有三種程序結構條件結構循環結構和順序結構
) 條件結構
與其它語言完全類似語法結構如下
if condition then
statement
else
statement
end if ;
)循環結構
這一結構與其他語言不太一樣在PL/SQL程序中有三種循環結構
aloop … end loop;
bwhile condition loop … end loop;
cfor variable in low_bound upper_bound loop … end loop;
其中的…代表循環體
)順序結構
實際就是goto的運用不過從程序控制的角度來看盡量少用goto可以使得程序結構更加的清晰
變量聲明與賦值
Oracle PL/SQL主要用於數據庫編程所以其所有的數據類型跟Oracle數據庫裡的字段類型是一一對應的大體分為數字型布爾型字符型和日期型這裡簡單介紹兩種常用數據類型numbervarchar
)number 用來存儲整數和浮點數范圍為1e~e其使用語法為 number[(precision scale)]
其中(precision scale)是可選的precision表示所有數字的個數scale表示小數點右邊數字的個數
)varchar 用來存儲變長的字符串其使用語法為 varchar[(size)]
其中size為可選表示該字符串所能存儲的最大長度
在Oracle PL/SQL中聲明變量與其他語言不太一樣它采用從右往左的方式聲明比如聲明一個number類型的變量v_id那其形式應為v_id nunmer;
如果給上面的v_id變量賦值不能用=應該用:=即形式為:v_id :=;
SQL基本命令
PL/SQL使用的數據庫操作語言還是基於SQL的所以熟悉SQL是進行Oracle PL/SQL編程的基礎SQL語言的分類情況大致如下
) 數據定義語言(DDL)CreateDropGrantRevoke…
) 數據操縱語言(DML)UpdateInsertDelete…
) 數據控制語言(DCL)CommitRollbackSavapoint…
) 其他Alter SystemConnectAllocate …
具體的語法結構可以參閱其他關於SQL語言的資料這裡不再贅述
二過程與函數
Oracle PL/SQL中的過程和函數與其他語言的過程和函數一樣都是為了執行一定的任務而組合在一起的語句過程無返回值函數有返回值
其語法結構為
過程Create or replace procedure procname(參數列表) as PL/SQL語句塊
函數Create or replace function funcname(參數列表) return 返回值 as PL/SQL語句塊
三游標
游標的定義為用游標來指代一個DML SQL操作返回的結果集即當一個對數據庫的查詢操作返回一組結果集時用游標來標注這組結果集以後通過對游標的操作來獲取結果集中的數據信息這裡特別提出游標的概念是因為它在PL/SQL的編程中非常的重要定義游標的語法結構如下cursor cursor_name is SQL語句;
四其他概念
Oracle PL/SQL中包的概念很重要主要是對一組功能相近的過程和函數進行封裝類似於面向對象中的名字空間的概念
觸發器是一種特殊的存儲過程其調用者比較特殊是當發生特定的事件才被調用主要用於多表之間的消息通知
From:http://tw.wingwit.com/Article/program/Oracle/201311/18883.html