




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1Oracle PL/SQL 基礎(chǔ)培訓(xùn)基礎(chǔ)培訓(xùn).2目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常處理.3課程介紹課程介紹教程概述 本教程假設(shè)讀者已了解關(guān)系型數(shù)據(jù)庫(kù)基本原理,明白表、視圖、主鍵、索引、外鍵、約束、關(guān)聯(lián)等基本概念,熟悉Oracle SQL 本教程定位是Oracle PL/SQL簡(jiǎn)明、實(shí)用教程,偏向于基本PL/SQL開(kāi)發(fā),若進(jìn)一步學(xué)習(xí)PL/SQL高級(jí)功能,請(qǐng)參閱其他教程或書(shū)籍文檔 課程目標(biāo)是完成課程后可進(jìn)行大部分Oracle PL/SQL開(kāi)發(fā)(編寫(xiě))適用對(duì)象 學(xué)習(xí)過(guò)Oracle SQL,未使用過(guò)Oracle PL/SQL的讀者
2、使用過(guò)SQL Server的Transact-SQL或其他數(shù)據(jù)庫(kù)版本的”T-SQL”,未使用過(guò)Oracle PL/SQL的讀者.4目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常處理.5基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)PL/SQL介紹Hello WorldPL/SQL塊分析變量聲明運(yùn)算符號(hào).6基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)-PL/SQL-PL/SQL介紹介紹PL/SQL概述 PL/SQL是Procedural Language extensions to SQL簡(jiǎn)寫(xiě) 將過(guò)程結(jié)構(gòu)與SQL無(wú)縫集成,實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和算法,最終實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)處理和其他相關(guān)功能 PL/SQL是
3、塊結(jié)構(gòu)化語(yǔ)言,塊是PL/SQL基本單元PL/SQL擴(kuò)充 變量和類(lèi)型 條件語(yǔ)句 循環(huán)語(yǔ)句.7基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)-Hello World-Hello World參考代碼.8基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)-PL/SQL-PL/SQL塊分析塊分析基本語(yǔ)法語(yǔ)法分析 PL/SQL是塊結(jié)構(gòu)程序,使用DECLARE、BEGIN、EXCEPTION、END關(guān)鍵字聲明塊,塊包含聲明部分、執(zhí)行部分、異常部分 使用- 做單行注釋,/* */做多行注釋 在DECLARE部分聲明變量 NULL語(yǔ)句表示什么都不做 RETURN語(yǔ)句,顯示退出PL/SQL塊執(zhí)行 PL/SQL塊可以嵌套.9基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)聲明變量基本語(yǔ)法變量類(lèi)型聲明變量示例變
4、量作用域.10語(yǔ)法說(shuō)明variable_name 變量名稱(chēng)CONSTANT 聲明為常量Datatype 數(shù)據(jù)類(lèi)型NOT NULL 變量不能為空(必須有賦值):= 賦值符號(hào)DEFAULT 賦默認(rèn)值initial_value 初始值基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -基本語(yǔ)法基本語(yǔ)法.11基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -變量類(lèi)型變量類(lèi)型 數(shù)字: NUMBER(p,s) :p是數(shù)字長(zhǎng)度,s是小數(shù)保留位,如NUMBER(7,2),就是最多保存7位的數(shù)字,其中小數(shù)點(diǎn)前是5位,小數(shù)點(diǎn)后是2位。p,s可以為空,一般為空 字符 VARCHAR2:存放可變長(zhǎng)字符串,有最大長(zhǎng)度限制 CHAR:
5、字符型,固定長(zhǎng)度 CLOB:大對(duì)象字符 LONG:長(zhǎng)字符型 日期 DATE 布爾 BOOLEAN 二進(jìn)制 RAW:存儲(chǔ)多媒體數(shù)據(jù),如圖象、聲音、視頻等 BLOB:大對(duì)象如圖象、聲音、視頻等.12基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -變量類(lèi)型變量類(lèi)型 引用: %TYPE :引用某個(gè)表某個(gè)字段的類(lèi)型和長(zhǎng)度, %ROWTYPE :引用某個(gè)表全部字段的類(lèi)型和長(zhǎng)度 記錄 Record Type:復(fù)合多個(gè)其他類(lèi)型,其中定義Record Type語(yǔ)法如下TYPE record_type is RECORD( record_field1 field1type NOT NULL := expr1 ; re
6、cord_field2 field2type NOT NULL := expr2 ; record_fieldn fieldntype NOT NULL := exprn ;)record_type是定義的新的記錄類(lèi)型record_field1 record_fieldn是記錄類(lèi)型字段名稱(chēng)Field1type fieldntype是各字段類(lèi)型NOT NULL可選項(xiàng),指定字段是否可以為空Express1expressn給各字段賦初始值.13基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -聲明變量示例聲明變量示例 變量聲明:.14基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -聲明變量示例聲明變量示例 變
7、量賦值:.15基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -變量作用域變量作用域作用域:PL/SQL變量作用域從變量聲明開(kāi)始,到代碼塊結(jié)束子塊聲明的變量,對(duì)塊不可見(jiàn)字塊同名變量會(huì)覆蓋父塊變量定義父塊時(shí)指定塊名,在字塊通過(guò)父塊名.變量名,引用父塊同名變量.16基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -運(yùn)算符號(hào)運(yùn)算符號(hào)算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符.17基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -運(yùn)算符號(hào)運(yùn)算符號(hào)算術(shù)運(yùn)算符號(hào)+ 加 1+1- 減 2-1* 乘 2*3/ 除 4/2| 字符連接 Beijing | 2008.18基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -運(yùn)算符號(hào)運(yùn)算符號(hào)關(guān)系運(yùn)算符號(hào)= 等于 ,1=1 不等于, 21 大于,21 小于, 1= 大于
8、等于, 2=1= 小于等于,1=2IS NULL 為空,沒(méi)有值,不是空字符串IS NOT NULL 不為空,有值BETWEEN AND 檢索兩值之間的內(nèi)容,2 BETWEEN 1 AND 3IN檢索匹配列表中的值LIKE檢索匹配字符樣式的數(shù)據(jù).19基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -運(yùn)算符號(hào)運(yùn)算符號(hào)邏輯運(yùn)算符號(hào)AND 兩個(gè)為真則結(jié)果為真OR 一個(gè)為真即為真NOT 取相反的邏輯值.20目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常處理.21條件轉(zhuǎn)移條件轉(zhuǎn)移 IF THEN IF THEN ELSE IF THEN ELSIF.22條件轉(zhuǎn)移條件轉(zhuǎn)移-IF
9、THEN-IF THEN語(yǔ)法IF 條件判定為真 THEN 可執(zhí)行語(yǔ)句塊END IF;示例.23條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN-IF THEN示例.24條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN ELSE-IF THEN ELSE語(yǔ)法IF 條件判定為真 THEN 可執(zhí)行語(yǔ)句塊1ELSE 可執(zhí)行語(yǔ)句塊2END IF;示例.25條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN ELSE-IF THEN ELSE示例.26條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN ELSIF-IF THEN ELSIF語(yǔ)法IF 條件判定為真 THEN 可執(zhí)行語(yǔ)句塊1ELSIF 可執(zhí)行語(yǔ)句塊2.ELSIF 可執(zhí)行語(yǔ)句塊NEND IF;示例.27條件轉(zhuǎn)移
10、條件轉(zhuǎn)移-IF THEN ELSIF-IF THEN ELSIF示例.28目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常處理.29循環(huán)執(zhí)行循環(huán)執(zhí)行 LOOP WHILE LOOP FOR LOOP.30循環(huán)執(zhí)行循環(huán)執(zhí)行-LOOP-LOOP語(yǔ)法LOOP 可執(zhí)行語(yǔ)句塊EXIT WHEN 條件判定END LOOP;說(shuō)明LOOP是無(wú)限循環(huán),可使用EXIT顯式退出LOOP循環(huán)EXIT有兩種格式:IF.THEN EXIT END IF和EXIT WHENEXIT語(yǔ)句必須放在循環(huán)內(nèi)EXIT可以出現(xiàn)多次,第一個(gè)EXIT執(zhí)行后,馬上退出循環(huán)EXIT只能退出
11、循環(huán),不能退出PL/SQL塊,要退出PL/SQL塊,使用RETURN;.31循環(huán)執(zhí)行循環(huán)執(zhí)行-LOOP-LOOP示例.32循環(huán)執(zhí)行循環(huán)執(zhí)行-LOOP-LOOP示例.33循環(huán)執(zhí)行循環(huán)執(zhí)行-WHILE LOOP-WHILE LOOP語(yǔ)法WHILE 條件判定 LOOP 可執(zhí)行語(yǔ)句塊END LOOP;說(shuō)明每次執(zhí)行“可執(zhí)行語(yǔ)句塊”前,先判斷“條件判定”是否為T(mén)RUE,因此循環(huán)有可能一次也不執(zhí)行如果“條件判定”一直為T(mén)RUE,則循環(huán)無(wú)限進(jìn)行下去,注意在“可執(zhí)行語(yǔ)句”部分設(shè)置“條件判定”可用EXIT顯式退出當(dāng)前循環(huán),EXIT有兩種格式:IF.THEN EXIT END IF和EXIT WHENEXIT語(yǔ)句必
12、須放在循環(huán)內(nèi)EXIT可以出現(xiàn)多次,第一個(gè)EXIT執(zhí)行后,馬上退出循環(huán)EXIT只能退出循環(huán),不能退出PL/SQL塊,要退出PL/SQL塊,使用RETURN;.34循環(huán)執(zhí)行循環(huán)執(zhí)行-WHILE LOOP-WHILE LOOP示例.35循環(huán)執(zhí)行循環(huán)執(zhí)行-WHILE LOOP-WHILE LOOP示例.36循環(huán)執(zhí)行循環(huán)執(zhí)行-WHILE LOOP-WHILE LOOP示例.37循環(huán)執(zhí)行循環(huán)執(zhí)行-WHILE-WHILE語(yǔ)法FOR 計(jì)數(shù)器變量 IN REVERSE 低界值.高界值 LOOP 可執(zhí)行語(yǔ)句塊END LOOP;說(shuō)明是每次執(zhí)行“可執(zhí)行語(yǔ)句塊”前,先判斷“條件判定”是否為T(mén)RUE,因此循環(huán)有可能一次也
13、不執(zhí)行 可用EXIT顯式退出當(dāng)前循環(huán),EXIT有兩種格式:IF.THEN EXIT END IF和EXIT WHEN EXIT語(yǔ)句必須放在循環(huán)內(nèi) EXIT可以出現(xiàn)多次,第一個(gè)EXIT執(zhí)行后,馬上退出循環(huán) EXIT只能退出循環(huán),不能退出PL/SQL塊,要退出PL/SQL塊,使用RETURN;.38循環(huán)執(zhí)行循環(huán)執(zhí)行-FOR LOOP-FOR LOOP示例.39循環(huán)執(zhí)行循環(huán)執(zhí)行-WHILE LOOP-WHILE LOOP示例.40循環(huán)執(zhí)行循環(huán)執(zhí)行-WHILE LOOP-WHILE LOOP示例.41目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常
14、處理.42游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)概念分類(lèi)屬性動(dòng)作聲明游標(biāo)使用游標(biāo)隱式游標(biāo)SELECT INTO.43游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -游標(biāo)概念游標(biāo)概念概念 游標(biāo)是一個(gè)機(jī)制,通過(guò)這個(gè)機(jī)制可以給一個(gè)SQL語(yǔ)句命名,并操作該SQL返回的數(shù)據(jù)或者使用該SQL返回的數(shù)據(jù)操作其他的數(shù)據(jù)分類(lèi) 顯式游標(biāo):顯式聲明游標(biāo),且由代碼管理游標(biāo)生命周期 隱式游標(biāo):非顯式聲明游標(biāo),由系統(tǒng)管理游標(biāo)生命周期.44游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -屬性動(dòng)作屬性動(dòng)作屬性清單操作動(dòng)作.45游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -聲明游標(biāo)聲明游標(biāo)語(yǔ)法示例 聲明游標(biāo)指向所有部門(mén) 聲明游標(biāo)指向所有參數(shù)指定部門(mén)的員工.46游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)單重循
15、環(huán)LOOP.END LOOPWHILE.LOOP.END LOOPFOR.LOOP.END LOOP.47游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -LOOP.END LOOP關(guān)鍵代碼塊.48游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -LOOP.END LOOP示例.49游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -LOOP.END LOOP示例.50游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -WHILE.LOOP.END LOOP關(guān)鍵代碼塊.51游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -WHILE.LOOP.END LOOP示例.52游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用
16、游標(biāo)- -WHILE.LOOP.END LOOP示例.53游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)-FOR-FOR.LOOP.END LOOP關(guān)鍵代碼塊.54游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -FOR.LOOP.END LOOP示例.55游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -FOR.LOOP.END LOOP示例.56游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -FOR.LOOP.END LOOP示例.57游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -FOR.LOOP.END LOOP示例.58游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)多重循環(huán)FOR.LOOP.EN
17、D LOOP.59游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -使用游標(biāo)使用游標(biāo)- -FOR.LOOP.END LOOP示例.60游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -隱式游標(biāo)隱式游標(biāo)SELECT INTOSELECT INTO背景從數(shù)據(jù)庫(kù)中獲取數(shù)據(jù)到變量時(shí),如果相關(guān)SQL只返回低于1條記錄,使用顯式游標(biāo)過(guò)于麻煩,Oracle提供SELECT INTO快速實(shí)現(xiàn)改功能。所有DML語(yǔ)句執(zhí)行時(shí)創(chuàng)建一個(gè)隱式游標(biāo),所以SELECT INTO也是游標(biāo),不過(guò)其創(chuàng)建和打開(kāi)、關(guān)閉全部由ORACLE自動(dòng)完成語(yǔ)法.61游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -隱式游標(biāo)隱式游標(biāo)SELECT INTOSELECT INTO示例.62游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -隱式游標(biāo)
18、隱式游標(biāo)SELECT INTOSELECT INTO序列取序列值,序列是一種數(shù)據(jù)庫(kù)對(duì)象,就像一個(gè)自增長(zhǎng)的計(jì)數(shù)器可以創(chuàng)建時(shí)指定初始值和最大值,以及增長(zhǎng)步長(zhǎng)(均勻增量)序列有currentVal和nextVal屬性分別是序列當(dāng)前值和序列下一值可通過(guò)s_seq_name.currentVal和s_seq_name.nextVal獲取值每次調(diào)用nextVal,序列就會(huì)自動(dòng)按設(shè)定步長(zhǎng)增長(zhǎng)語(yǔ)法.63游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -隱式游標(biāo)隱式游標(biāo)SELECT INTOSELECT INTO示例.64游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)- -隱式游標(biāo)隱式游標(biāo)SELECT INTOSELECT INTO示例.65游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)
19、據(jù)- -隱式游標(biāo)隱式游標(biāo)SELECT INTOSELECT INTO示例.66目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常處理.67異常處理異常處理什么是異常預(yù)定義異常自定義異常處理異常關(guān)鍵字OTHERS編譯指令EXCEPTION_INIT.68異常處理異常處理- -什么是異常什么是異常概述 PL/SQL運(yùn)行時(shí)有可能會(huì)發(fā)生錯(cuò)誤或警告,如除數(shù)為零,沒(méi)有找到數(shù)據(jù),DML操作違反數(shù)據(jù)庫(kù)對(duì)象約束等,這種運(yùn)行時(shí)錯(cuò)誤就稱(chēng)為異常,異常是一種錯(cuò)誤形態(tài) ORACLE將所有已知底層錯(cuò)誤用一系列錯(cuò)誤代碼標(biāo)記,并對(duì)應(yīng)相應(yīng)錯(cuò)誤信息描述 ORACLE將部分已知底層
20、SQL或者硬件錯(cuò)誤,封裝成異常,并提供異常處理機(jī)制處理異常 對(duì)于業(yè)務(wù)邏輯上的錯(cuò)誤,需要用戶(hù)自定義異常來(lái)描述和控制 異常機(jī)制實(shí)現(xiàn)程序主邏輯和錯(cuò)誤處理邏輯分離,使程序可讀性和健壯性得到進(jìn)一步提高分類(lèi) 預(yù)定義異常:由Oracle數(shù)據(jù)庫(kù)自帶,在使用時(shí)不用先聲明 自定義異常:由開(kāi)發(fā)人員自定義,在使用前需要先聲明.69異常處理異常處理- -預(yù)定義異常預(yù)定義異常清單.70異常處理異常處理- -自定義異常自定義異常概述將業(yè)務(wù)邏輯錯(cuò)誤封裝成異常,這種異常就是自定義異常自定義異常在使用前必須先聲明,可在PL/SQL代碼塊聲明部分和包中聲明自定義異常異常不是變量,聲明不能賦值異常作用域和變量一直,在一個(gè)塊和其子塊可
21、見(jiàn),子塊聲明與父塊同名異常,會(huì)覆蓋父塊聲明的異常語(yǔ)法.71異常處理異常處理- -處理異常處理異常示例自定義異常.72異常處理異常處理- -處理異常處理異常示例自定義異常.73異常處理異常處理- -處理異常處理異常異常觸發(fā)異常捕獲與傳播.74異常處理異常處理- -處理異常處理異常異常觸發(fā)對(duì)于預(yù)定義異常,一個(gè)與異常相關(guān)的錯(cuò)誤發(fā)生的時(shí)候,就會(huì)自動(dòng)觸發(fā)該異常,也可以使用RAISE語(yǔ)句顯式觸發(fā)對(duì)于自定義異常,必須在代碼中使用RAISE語(yǔ)句顯式觸發(fā).75異常處理異常處理- -處理異常處理異常示例預(yù)定義異常.76異常處理異常處理- -處理異常處理異常示例自定義異常.77異常處理異常處理- -處理異常處理異常
22、- -異常捕獲與傳播異常捕獲與傳播處理原則只有PL/SQL代碼塊執(zhí)行部分觸發(fā)的異常才會(huì)被相應(yīng)代碼塊合適的異常處理部分捕獲如果觸發(fā)異常的PL/SQL代碼塊沒(méi)有合適異常處理部分,則異常會(huì)傳播到該代碼塊的父代碼塊的合適的異常處理部分如果在父代碼塊仍未找到合適的異常處理部分,則繼續(xù)往上傳播異常,直至找到合適的異常處理部分找到合適的異常處理部分并執(zhí)行后,同一語(yǔ)句塊的其他異常處理部分不會(huì)被執(zhí)行,即使執(zhí)行的合適的異常處理部分再次觸發(fā)異常如果最后仍然沒(méi)有照到合適的異常處理部分,則將控制權(quán)交給當(dāng)前調(diào)用環(huán)境示例執(zhí)行部分觸發(fā)的異常聲明部分觸發(fā)的異常異常處理部分觸發(fā)的異常.78異常處理異常處理- -處理異常處理異常-
23、 -異常捕獲與傳播異常捕獲與傳播示例執(zhí)行部分觸發(fā)的異常.79異常處理異常處理- -處理異常處理異常- -異常捕獲與傳播異常捕獲與傳播示例聲明部分觸發(fā)的異常.80異常處理異常處理- -處理異常處理異常- -異常捕獲與傳播異常捕獲與傳播示例異常處理部分觸發(fā)的異常.81異常處理異常處理- -關(guān)鍵字關(guān)鍵字OTHERSOTHERS用途代表未知異常在無(wú)法預(yù)測(cè)或不想指明要捕獲的異常類(lèi)型時(shí)使用一個(gè)PL/SQL代碼塊如果有多個(gè)異常處理語(yǔ)句,帶OTHERS的異常處理語(yǔ)句必須放在最后.82異常處理異常處理- -處理異常處理異常- -異常捕獲與傳播異常捕獲與傳播示例異常處理部分觸發(fā)的異常.83異常處理異常處理- -處
24、理異常處理異常- -異常捕獲與傳播異常捕獲與傳播示例異常處理部分觸發(fā)的異常.84異常處理異常處理- -編譯指令編譯指令EXCEPTION_INIT用途將ORACLE錯(cuò)誤代碼與自定義異常關(guān)聯(lián)發(fā)生相應(yīng)錯(cuò)誤時(shí),轉(zhuǎn)換為異常,使用異常機(jī)制處理錯(cuò)誤語(yǔ)法.85異常處理異常處理- -處理異常處理異常- -編譯指令編譯指令EXCEPTION_INITEXCEPTION_INIT示例ORA-1843,月份錯(cuò)誤.86異常處理異常處理- -處理異常處理異常- -編譯指令編譯指令EXCEPTION_INITEXCEPTION_INIT示例ORA-1476,除數(shù)為零.87目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條
25、件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常處理.88寄存對(duì)象寄存對(duì)象 過(guò)程 函數(shù) 包 觸發(fā)器.89寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程什么是過(guò)程聲明過(guò)程調(diào)用過(guò)程刪除過(guò)程.90寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -什么是過(guò)程什么是過(guò)程概念過(guò)程是特殊的PL/SQL代碼塊,在普通代碼塊基礎(chǔ)上加上過(guò)程聲明語(yǔ)句Procedure.再加上參數(shù),代碼塊就變?yōu)檫^(guò)程過(guò)程可以編譯到數(shù)據(jù)庫(kù)中,編譯后自動(dòng)保存在數(shù)據(jù)庫(kù)中過(guò)程可以通過(guò)名稱(chēng)和包、schema等限定詞被其他代碼調(diào)用過(guò)程參數(shù)有IN/OUT/IN OUT三種類(lèi)型,其中IN類(lèi)型可以被過(guò)程體引用,但不能改寫(xiě)值;OUT類(lèi)型不可被過(guò)程體引用,但可改寫(xiě)值;IN OUT
26、既可以被過(guò)程體引用,又可以改寫(xiě)值.91寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -聲明過(guò)程聲明過(guò)程語(yǔ)法是.92寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -聲明過(guò)程聲明過(guò)程示例新建一個(gè)部門(mén),名稱(chēng)由參數(shù)指定.93寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -聲明過(guò)程聲明過(guò)程示例復(fù)制參數(shù)1指定的部門(mén)及其員工,部門(mén)名稱(chēng)和員工姓名在原來(lái)名稱(chēng)前加上”copied by 參數(shù)2 ”,員工號(hào)碼為序列值.94寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -聲明過(guò)程聲明過(guò)程示例復(fù)制參數(shù)1指定的部門(mén)及其員工,部門(mén)名稱(chēng)和員工姓名在原來(lái)名稱(chēng)前加上”copied by 參數(shù)2 ”,員工號(hào)碼為序列值(續(xù)).95寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -聲明過(guò)程聲明過(guò)
27、程示例將參數(shù)1指定的部門(mén),工資低于參數(shù)2指定的工資,增加參數(shù)3,并返回是否更新成功,以及相應(yīng)的提示信息.96寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -聲明過(guò)程聲明過(guò)程示例將參數(shù)1指定的部門(mén),工資低于參數(shù)2指定的工資,增加參數(shù)3,并返回是否更新成功,以及相應(yīng)的提示信息(續(xù)).97寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -調(diào)用過(guò)程調(diào)用過(guò)程方法位置標(biāo)志法帶名標(biāo)志法.98寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -調(diào)用過(guò)程調(diào)用過(guò)程示例位置標(biāo)志法.99寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -調(diào)用過(guò)程調(diào)用過(guò)程示例帶名標(biāo)志法.100寄存對(duì)象寄存對(duì)象- -過(guò)程過(guò)程- -刪除過(guò)程刪除過(guò)程語(yǔ)法DROP PROCEDURE procedu
28、re_name;示例DROP PROCEDURE p_copy_dept_and_emp;.101寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)什么是函數(shù)聲明函數(shù)調(diào)用函數(shù)刪除函數(shù).102寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)- -什么是函數(shù)什么是函數(shù)概念過(guò)程是特殊的PL/SQL代碼塊,在普通代碼塊基礎(chǔ)上加上過(guò)程聲明語(yǔ)句Function. Return Type再加上參數(shù),代碼塊就變?yōu)楹瘮?shù)函數(shù)可以編譯到數(shù)據(jù)庫(kù)中,編譯后自動(dòng)保存在數(shù)據(jù)庫(kù)中函數(shù)可以通過(guò)名稱(chēng)和包、schema等限定詞被其他代碼調(diào)用函數(shù)參數(shù)有IN/OUT/IN OUT三種類(lèi)型,其中IN類(lèi)型可以被函數(shù)體引用,但不能改寫(xiě)值;OUT類(lèi)型不可被函數(shù)體引用,但可改寫(xiě)值;
29、IN OUT 既可以被函數(shù)體引用,又可以改寫(xiě)值函數(shù)有返回值,只能返回一個(gè)值.103寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)語(yǔ)法.104寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)示例將參數(shù)1指定的部門(mén)的所有員工姓名連接起來(lái),中間用逗號(hào)隔開(kāi).105寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)- -調(diào)用函數(shù)調(diào)用函數(shù)方法位置標(biāo)志法帶名標(biāo)志法.106寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)- -調(diào)用函數(shù)調(diào)用函數(shù)示例位置標(biāo)志法.107寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)- -調(diào)用函數(shù)調(diào)用函數(shù)示例帶名標(biāo)志法.108寄存對(duì)象寄存對(duì)象- -函數(shù)函數(shù)- -刪除函數(shù)刪除函數(shù)語(yǔ)法DROP FUNCTION procedure_name;示例DROP FUNCTION
30、fn_get_emp_name;.109寄存對(duì)象寄存對(duì)象- -包包什么是包聲明包調(diào)用包刪除包.110寄存對(duì)象寄存對(duì)象- -包包- -什么是包什么是包概念包是是特殊的PL/SQL代碼塊,是過(guò)程、函數(shù)、變量的容器包可以編譯到數(shù)據(jù)庫(kù)中,編譯后自動(dòng)保存在數(shù)據(jù)庫(kù)中可以通過(guò)包名、schema等限定詞調(diào)用包中的其他數(shù)據(jù)庫(kù)對(duì)象包分包頭和包體,通過(guò)PACKAGE和PACKAGE BODY關(guān)鍵詞分別聲明包頭和包體.111寄存對(duì)象寄存對(duì)象- -包頭包頭語(yǔ)法.112寄存對(duì)象寄存對(duì)象- -包體包體示例.113寄存對(duì)象寄存對(duì)象- -包包- -聲明包聲明包示例包頭.114寄存對(duì)象寄存對(duì)象- -包包- -聲明包聲明包示例包體
31、.115寄存對(duì)象寄存對(duì)象- -包包- -調(diào)用包對(duì)象調(diào)用包對(duì)象方法位置標(biāo)志法帶名標(biāo)志法.116寄存對(duì)象寄存對(duì)象- -包包- -調(diào)用函數(shù)調(diào)用函數(shù)示例位置標(biāo)志法.117寄存對(duì)象寄存對(duì)象- -包包- -調(diào)用函數(shù)調(diào)用函數(shù)示例帶名標(biāo)志法.118寄存對(duì)象寄存對(duì)象- -包包- -刪除包刪除包語(yǔ)法DROP PACKAGE package_name;示例DROP PACKAGE PKG_SQL_APP;.119寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器什么是觸發(fā)器聲明觸發(fā)器調(diào)用觸發(fā)器刪除觸發(fā)器.120寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器- -什么是觸發(fā)器什么是觸發(fā)器概念過(guò)程是特殊的PL/SQL代碼塊,在普通代碼塊基礎(chǔ)上加上
32、聲明語(yǔ)句Trigger. Before/After On等關(guān)鍵字后,代碼塊就變?yōu)橛|發(fā)器觸發(fā)器可以編譯到數(shù)據(jù)庫(kù)中,編譯后自動(dòng)保存在數(shù)據(jù)庫(kù)中觸發(fā)器在按定義時(shí)指定表數(shù)據(jù)變化的事件中自動(dòng)被調(diào)用表數(shù)據(jù)變化事件包括新增、更新、刪除.121寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器語(yǔ)法.122寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器示例.123寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器示例.124寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器示例.125寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器- -調(diào)用觸發(fā)器調(diào)用觸發(fā)器方法:系統(tǒng)自動(dòng)調(diào)用表數(shù)據(jù)新
33、增表數(shù)據(jù)更新表數(shù)據(jù)刪除.126寄存對(duì)象寄存對(duì)象- -觸發(fā)器觸發(fā)器- -刪除觸發(fā)器刪除觸發(fā)器語(yǔ)法DROP TRIGGER trigger_name;示例DROP TRIGGER trg_insert_emp_his;.127目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對(duì)象u 內(nèi)置函數(shù)u 異常處理.128內(nèi)置函數(shù)內(nèi)置函數(shù)概念內(nèi)置函數(shù)是Oracle提供的、預(yù)定義好的函數(shù)內(nèi)置函數(shù)不用聲明或引用包就可以使用分類(lèi)多行函數(shù),對(duì)查詢(xún)返回的數(shù)據(jù)的多行起作用,多行函數(shù)在SELECT語(yǔ)句中,配合GROUP BY一起使用單行函數(shù),對(duì)查詢(xún)返回的數(shù)據(jù)的每一行起作用,單行函數(shù)也可以在PL/
34、SQL中直接使用,將函數(shù)返回值賦值給變量.129內(nèi)置函數(shù)內(nèi)置函數(shù)多行函數(shù)COUNTAVGSUMMINMAX.130內(nèi)置函數(shù)內(nèi)置函數(shù)單行函數(shù)數(shù)值函數(shù)字符函數(shù)轉(zhuǎn)換函數(shù)日期函數(shù)雜項(xiàng)函數(shù).131內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)數(shù)值函數(shù)ABSSIGINCEILFLOORROUNDTRUNCMOD.132內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -數(shù)值函數(shù)數(shù)值函數(shù)-ABS-ABS用途返回絕對(duì)值語(yǔ)法ABS(number_param).133內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -數(shù)值函數(shù)數(shù)值函數(shù)-TO_NUMBER-TO_NUMBER示例.134內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)字符函數(shù)LEN
35、GTHLENGTHBLOWERUPPERINSTRSUBSTRREPLACELPADRPADLTRIMRTRIM.135內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)字符函數(shù)-LENGTH-LENGTH用途返回字符長(zhǎng)度語(yǔ)法LENGTH(string_param).136內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)字符函數(shù)-LENGTH-LENGTH示例.137內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)字符函數(shù)-LENGTHB-LENGTHB用途返回字符按字節(jié)計(jì)算長(zhǎng)度語(yǔ)法LENGTHB(string_param).138內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)
36、字符函數(shù)-LENGTHB-LENGTHB示例.139內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)字符函數(shù)-LOWER-LOWER用途將字符轉(zhuǎn)為小寫(xiě),參數(shù)字符串中可包含非字符,如數(shù)字,特殊符號(hào)等語(yǔ)法LOWER(string_param).140內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)字符函數(shù)-LOWER-LOWER示例.141內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)字符函數(shù)-UPPER-UPPER用途將字符轉(zhuǎn)為大寫(xiě)語(yǔ)法LOWER(string_param).142內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -字符函數(shù)字符函數(shù)-UPPER-UPPER示例.143內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)轉(zhuǎn)換函數(shù)TO_NUMBERTO_CHARTO_DATE.144內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -數(shù)值函數(shù)數(shù)值函數(shù)-TO_NUMBER-TO_NUMBER用途將字符轉(zhuǎn)為數(shù)字型語(yǔ)法TO_NUMBER(param).145內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -數(shù)值函數(shù)數(shù)值函數(shù)-TO_NUMBER-TO_NUMBER示例.146內(nèi)置函數(shù)內(nèi)置函數(shù)- -單行函數(shù)單行函數(shù)- -數(shù)值函數(shù)數(shù)值函數(shù)-TO_CHAR-TO_CHAR用途將數(shù)字轉(zhuǎn)為字符將日期類(lèi)轉(zhuǎn)為字符型,按一定格式語(yǔ)法TO_CHAR(string_param)TO_CHAR(dat
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇南京玄武區(qū)南京田家炳高級(jí)中學(xué)2024~2025學(xué)年高二下冊(cè)6月期末考試數(shù)學(xué)試題學(xué)生卷
- 必修二綜合檢測(cè)基礎(chǔ)卷人教A版2019必修第二冊(cè)學(xué)生卷
- 邊緣計(jì)算信托投資與數(shù)字孿生技術(shù)結(jié)合研究考核試卷
- 內(nèi)陸?zhàn)B殖品種選育與推廣考核試卷
- 金屬加工機(jī)械制造智能監(jiān)控與故障預(yù)警系統(tǒng)開(kāi)發(fā)考核試卷
- 派遣用工法律法規(guī)培訓(xùn)課程更新考核試卷
- 2025年中國(guó)PU涂料數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)PET鋁膜數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025年中國(guó)J型車(chē)門(mén)防撞條數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)DVD解碼器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年北京市第一次普通高中學(xué)業(yè)水平合格性考試歷史試題(含答案)
- ODM合同范本模板
- 2024年秋七年級(jí)上冊(cè)英語(yǔ)單詞表
- 2025年湖南網(wǎng)絡(luò)工程職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)含答案
- SEAtech 石油石化ICS網(wǎng)絡(luò)安全解決方案
- 班級(jí)管理中的法治教育實(shí)踐
- 高二【數(shù)學(xué)(人教A版)】用空間向量研究距離、夾角問(wèn)題(2)-教學(xué)設(shè)計(jì)
- 中頻藥物透入治療
- 四好農(nóng)村路培訓(xùn)
- 綜合機(jī)電供應(yīng)及安裝專(zhuān)業(yè)分包工程機(jī)電系統(tǒng)調(diào)試方案
- 城市軌道交通車(chē)輛智慧運(yùn)維系統(tǒng)技術(shù)規(guī)范
評(píng)論
0/150
提交評(píng)論