OraclePL編程語(yǔ)言的優(yōu)點(diǎn)介紹
OraclePL/SQL通俗的講就是過(guò)程語(yǔ)言(Procedural Language)和結(jié)構(gòu)化查詢的相關(guān)語(yǔ)言(SQL)相結(jié)合而演變成的編程語(yǔ)言,OraclePL/SQL其實(shí)就是對(duì)SQL 的擴(kuò)展,它支持多種數(shù)據(jù)類型,如大對(duì)象和集合類型可以使用條件和循環(huán)等控制結(jié)構(gòu)。
可以創(chuàng)建存儲(chǔ)過(guò)程,觸發(fā)器和程序包,給SQL 語(yǔ)句的執(zhí)行添加程序邏輯!他與Oracle服務(wù)器
和Oracle工具緊密集成,具備可移植,靈活性和安全性。
PL/SQL 的優(yōu)點(diǎn)
支持 SQL
數(shù)據(jù)操縱命令
事務(wù)控制命令
游標(biāo)控制
SQL 函數(shù)和 SQL 運(yùn)算符
支持面向?qū)ο缶幊?(OOP)
可移植性
可運(yùn)行在任何操作系統(tǒng)和平臺(tái)上的Oralce 數(shù)據(jù)庫(kù)。
更佳的性能
與 SQL 緊密集成,簡(jiǎn)化數(shù)據(jù)處理
支持所有 SQL 數(shù)據(jù)類型
支持 NULL 值
支持 %TYPE 和 %ROWTYPE 屬性類型
安全性
可以通過(guò)存儲(chǔ)過(guò)程限制用戶對(duì)數(shù)據(jù)的訪問(wèn)。
PL/SQL 的體系結(jié)構(gòu)
PL/SQL引擎駐留在Oracle服務(wù)器中,該引擎接受PL/SQL塊,并且對(duì)起
進(jìn)行編譯執(zhí)行!#p#
PL/SQL 塊簡(jiǎn)介
OraclePL/SQL塊是構(gòu)成程序的基本單位,每一個(gè)塊都包含有PL/SQL和SQL語(yǔ)句,典型的PL/SQL代碼塊包含如下結(jié)構(gòu):
(1).聲明部分
(2)可執(zhí)行部分
(3)異常處理
語(yǔ)法結(jié)構(gòu)如下:
[DECLARE
declarations]—聲明部分
BEGIN
executable statements---可執(zhí)行部分
[EXCEPTION –異常處理
- handlers]
- END;
代碼示例:
DECLARE
qty_on_hand NUMBER(5); --程序聲明部分,定義變量,游標(biāo)和自定義常量
- BEGIN
- SELECT quantity INTO qty_on_hand -
- FROM Products -
- WHERE product = '芭比娃娃' -
- FOR UPDATE OF quantity; -
- IF qty_on_hand > 0 THEN -
- UPDATE Products SET quantityquantity = quantity + 1 -
WHERE product = '芭比娃娃'; 程序執(zhí)行部分
- INSERT INTO purchase_record -
- VALUES ('已購(gòu)買芭比娃娃', SYSDATE); -
- END IF; -
- COMMIT; -
EXCEPTION /* 異常處理語(yǔ)句 * / -----------------------異常處理
- WHEN OTHERS THEN -
- DBMS_OUTPUT.PUT_LINE('出錯(cuò):'|| SQLERRM); -
- END;
變量和常量
OraclePL/SQL 塊中可以使用變量和常量
在聲明部分聲明,使用前必須先聲明
聲明時(shí)必須指定數(shù)據(jù)類型,每行聲明一個(gè)標(biāo)識(shí)符
在可執(zhí)行部分的 SQL 語(yǔ)句和過(guò)程語(yǔ)句中使用
聲明變量和常量的語(yǔ)法
- identifier [CONSTANT] datatype [NOT NULL]
- [:= | DEFAULT expr];
給變量賦值有兩種方法
使用賦值語(yǔ)句 :=
使用 select into 語(yǔ)句
代碼示例:
- DECLARE
- icode VARCHAR2(6);
- p_catg VARCHAR2(20);
- p_rate NUMBER;
- c_rate CONSTANT NUMBER := 0.10;
- BEGIN
- ...
- icode := 'i205';
- SELECT p_category, itemrate * c_rate
- INTO p_catg, p_rate
- FROM itemfile WHERE itemcode = icode;
- ...
- END;
數(shù)據(jù)類型
OraclePL/SQL支持的內(nèi)置數(shù)據(jù)類型有如下幾種:
如圖:
標(biāo)量類型
數(shù)字
字符
CHAR
VARCHAR2
LONG
RAW
LONG RAW
結(jié)構(gòu)如圖:
日期時(shí)間類型
日期時(shí)間類型
存儲(chǔ)日期和時(shí)間數(shù)據(jù)
常用的兩種日期時(shí)間類型
DATE
TIMESTAMP
布爾類型
此類別只有一種類型,即BOOLEAN類型
用于存儲(chǔ)邏輯值(TRUE、FALSE和NULL)
不能向數(shù)據(jù)庫(kù)中插入BOOLEAN數(shù)據(jù)
不能將列值保存到BOOLEAN變量中
只能對(duì)BOOLEAN變量執(zhí)行邏輯操作
如圖:
LOB類型
用于存儲(chǔ)大文本、圖像、視頻剪輯和聲音剪輯等非結(jié)構(gòu)化數(shù)據(jù)。
LOB數(shù)據(jù)類型可存儲(chǔ)*** 4GB的數(shù)據(jù)。
LOB 類型包括:
BLOB 將大型二進(jìn)制對(duì)象存儲(chǔ)在數(shù)據(jù)庫(kù)中
CLOB 將大型字符數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中
NCLOB 存儲(chǔ)大型UNICODE字符數(shù)據(jù)
BFILE 將大型二進(jìn)制對(duì)象存儲(chǔ)在操作系統(tǒng)文件中
LOB 類型的數(shù)據(jù)庫(kù)列僅存儲(chǔ)定位符,該定位符指向大型對(duì)象的存儲(chǔ)位置
DBMS_LOB程序包用于操縱 LOB 數(shù)據(jù)
代碼示例:
- SET SERVEROUTPUT ON
- DECLARE
- clob_var CLOB;
- amount INTEGER;
- offset INTEGER;
- output_var VARCHAR2(100);
- BEGIN
- SELECT chapter_text INTO clob_var
- FROM my_book_text
- WHERE chapter_id=5;
amount := 24; -- 要讀取的字符數(shù)
offset := 1; -- 起始位置
- DBMS_LOB.READ(clob_var,amount,offset,output_var);
- DBMS_OUTPUT.PUT_LINE(output_var);
- END;
- /
文章出自:http://database.csdn.net/page/08155ea6-cb32-4167-ad08-022873597ded
【編輯推薦】