版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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 寄存對象u 內(nèi)置函數(shù)u 異常處理.3課程介紹課程介紹教程概述 本教程假設(shè)讀者已了解關(guān)系型數(shù)據(jù)庫基本原理,明白表、視圖、主鍵、索引、外鍵、約束、關(guān)聯(lián)等基本概念,熟悉Oracle SQL 本教程定位是Oracle PL/SQL簡明、實(shí)用教程,偏向于基本PL/SQL開發(fā),若進(jìn)一步學(xué)習(xí)PL/SQL高級(jí)功能,請參閱其他教程或書籍文檔 課程目標(biāo)是完成課程后可進(jìn)行大部分Oracle PL/SQL開發(fā)(編寫)適用對象 學(xué)習(xí)過Oracle SQL,未使用過Oracle PL/SQL的讀者
2、使用過SQL Server的Transact-SQL或其他數(shù)據(jù)庫版本的”T-SQL”,未使用過Oracle PL/SQL的讀者.4目錄目錄u 課程介紹u 基礎(chǔ)知識(shí)u 循環(huán)執(zhí)行u 條件轉(zhuǎn)移u 游標(biāo)與數(shù)據(jù)u 寄存對象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é)構(gòu)與SQL無縫集成,實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和算法,最終實(shí)現(xiàn)對數(shù)據(jù)庫的數(shù)據(jù)處理和其他相關(guān)功能 PL/SQL是
3、塊結(jié)構(gòu)化語言,塊是PL/SQL基本單元PL/SQL擴(kuò)充 變量和類型 條件語句 循環(huán)語句.7基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)-Hello World-Hello World參考代碼.8基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)-PL/SQL-PL/SQL塊分析塊分析基本語法語法分析 PL/SQL是塊結(jié)構(gòu)程序,使用DECLARE、BEGIN、EXCEPTION、END關(guān)鍵字聲明塊,塊包含聲明部分、執(zhí)行部分、異常部分 使用- 做單行注釋,/* */做多行注釋 在DECLARE部分聲明變量 NULL語句表示什么都不做 RETURN語句,顯示退出PL/SQL塊執(zhí)行 PL/SQL塊可以嵌套.9基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)聲明變量基本語法變量類型聲明變量示例變
4、量作用域.10語法說明variable_name 變量名稱CONSTANT 聲明為常量Datatype 數(shù)據(jù)類型NOT NULL 變量不能為空(必須有賦值):= 賦值符號(hào)DEFAULT 賦默認(rèn)值initial_value 初始值基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -基本語法基本語法.11基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -變量類型變量類型 數(shù)字: NUMBER(p,s) :p是數(shù)字長度,s是小數(shù)保留位,如NUMBER(7,2),就是最多保存7位的數(shù)字,其中小數(shù)點(diǎn)前是5位,小數(shù)點(diǎn)后是2位。p,s可以為空,一般為空 字符 VARCHAR2:存放可變長字符串,有最大長度限制 CHAR:
5、字符型,固定長度 CLOB:大對象字符 LONG:長字符型 日期 DATE 布爾 BOOLEAN 二進(jìn)制 RAW:存儲(chǔ)多媒體數(shù)據(jù),如圖象、聲音、視頻等 BLOB:大對象如圖象、聲音、視頻等.12基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -變量類型變量類型 引用: %TYPE :引用某個(gè)表某個(gè)字段的類型和長度, %ROWTYPE :引用某個(gè)表全部字段的類型和長度 記錄 Record Type:復(fù)合多個(gè)其他類型,其中定義Record Type語法如下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是定義的新的記錄類型record_field1 record_fieldn是記錄類型字段名稱Field1type fieldntype是各字段類型NOT NULL可選項(xiàng),指定字段是否可以為空Express1expressn給各字段賦初始值.13基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -聲明變量示例聲明變量示例 變量聲明:.14基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -聲明變量示例聲明變量示例 變
7、量賦值:.15基礎(chǔ)知識(shí)基礎(chǔ)知識(shí)- -聲明變量聲明變量- -變量作用域變量作用域作用域:PL/SQL變量作用域從變量聲明開始,到代碼塊結(jié)束子塊聲明的變量,對塊不可見字塊同名變量會(huì)覆蓋父塊變量定義父塊時(shí)指定塊名,在字塊通過父塊名.變量名,引用父塊同名變量.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 為空,沒有值,不是空字符串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 寄存對象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語法IF 條件判定為真 THEN 可執(zhí)行語句塊END IF;示例.23條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN-IF THEN示例.24條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN ELSE-IF THEN ELSE語法IF 條件判定為真 THEN 可執(zhí)行語句塊1ELSE 可執(zhí)行語句塊2END IF;示例.25條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN ELSE-IF THEN ELSE示例.26條件轉(zhuǎn)移條件轉(zhuǎn)移-IF THEN ELSIF-IF THEN ELSIF語法IF 條件判定為真 THEN 可執(zhí)行語句塊1ELSIF 可執(zhí)行語句塊2.ELSIF 可執(zhí)行語句塊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 寄存對象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語法LOOP 可執(zhí)行語句塊EXIT WHEN 條件判定END LOOP;說明LOOP是無限循環(huán),可使用EXIT顯式退出LOOP循環(huán)EXIT有兩種格式:IF.THEN EXIT END IF和EXIT WHENEXIT語句必須放在循環(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語法WHILE 條件判定 LOOP 可執(zhí)行語句塊END LOOP;說明每次執(zhí)行“可執(zhí)行語句塊”前,先判斷“條件判定”是否為TRUE,因此循環(huán)有可能一次也不執(zhí)行如果“條件判定”一直為TRUE,則循環(huán)無限進(jìn)行下去,注意在“可執(zhí)行語句”部分設(shè)置“條件判定”可用EXIT顯式退出當(dāng)前循環(huán),EXIT有兩種格式:IF.THEN EXIT END IF和EXIT WHENEXIT語句必
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語法FOR 計(jì)數(shù)器變量 IN REVERSE 低界值.高界值 LOOP 可執(zhí)行語句塊END LOOP;說明是每次執(zhí)行“可執(zhí)行語句塊”前,先判斷“條件判定”是否為TRUE,因此循環(huán)有可能一次也
13、不執(zhí)行 可用EXIT顯式退出當(dāng)前循環(huán),EXIT有兩種格式:IF.THEN EXIT END IF和EXIT WHEN EXIT語句必須放在循環(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 寄存對象u 內(nèi)置函數(shù)u 異常
14、處理.42游標(biāo)與數(shù)據(jù)游標(biāo)與數(shù)據(jù)概念分類屬性動(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ī)制,通過這個(gè)機(jī)制可以給一個(gè)SQL語句命名,并操作該SQL返回的數(shù)據(jù)或者使用該SQL返回的數(shù)據(jù)操作其他的數(shù)據(jù)分類 顯式游標(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)語法示例 聲明游標(biāo)指向所有部門 聲明游標(biāo)指向所有參數(shù)指定部門的員工.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ù)庫中獲取數(shù)據(jù)到變量時(shí),如果相關(guān)SQL只返回低于1條記錄,使用顯式游標(biāo)過于麻煩,Oracle提供SELECT INTO快速實(shí)現(xiàn)改功能。所有DML語句執(zhí)行時(shí)創(chuàng)建一個(gè)隱式游標(biāo),所以SELECT INTO也是游標(biāo),不過其創(chuàng)建和打開、關(guān)閉全部由ORACLE自動(dòng)完成語法.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ù)庫對象,就像一個(gè)自增長的計(jì)數(shù)器可以創(chuàng)建時(shí)指定初始值和最大值,以及增長步長(均勻增量)序列有currentVal和nextVal屬性分別是序列當(dāng)前值和序列下一值可通過s_seq_name.currentVal和s_seq_name.nextVal獲取值每次調(diào)用nextVal,序列就會(huì)自動(dòng)按設(shè)定步長增長語法.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 寄存對象u 內(nèi)置函數(shù)u 異常處理.67異常處理異常處理什么是異常預(yù)定義異常自定義異常處理異常關(guān)鍵字OTHERS編譯指令EXCEPTION_INIT.68異常處理異常處理- -什么是異常什么是異常概述 PL/SQL運(yùn)行時(shí)有可能會(huì)發(fā)生錯(cuò)誤或警告,如除數(shù)為零,沒有找到數(shù)據(jù),DML操作違反數(shù)據(jù)庫對象約束等,這種運(yùn)行時(shí)錯(cuò)誤就稱為異常,異常是一種錯(cuò)誤形態(tài) ORACLE將所有已知底層錯(cuò)誤用一系列錯(cuò)誤代碼標(biāo)記,并對應(yīng)相應(yīng)錯(cuò)誤信息描述 ORACLE將部分已知底層
20、SQL或者硬件錯(cuò)誤,封裝成異常,并提供異常處理機(jī)制處理異常 對于業(yè)務(wù)邏輯上的錯(cuò)誤,需要用戶自定義異常來描述和控制 異常機(jī)制實(shí)現(xiàn)程序主邏輯和錯(cuò)誤處理邏輯分離,使程序可讀性和健壯性得到進(jìn)一步提高分類 預(yù)定義異常:由Oracle數(shù)據(jù)庫自帶,在使用時(shí)不用先聲明 自定義異常:由開發(fā)人員自定義,在使用前需要先聲明.69異常處理異常處理- -預(yù)定義異常預(yù)定義異常清單.70異常處理異常處理- -自定義異常自定義異常概述將業(yè)務(wù)邏輯錯(cuò)誤封裝成異常,這種異常就是自定義異常自定義異常在使用前必須先聲明,可在PL/SQL代碼塊聲明部分和包中聲明自定義異常異常不是變量,聲明不能賦值異常作用域和變量一直,在一個(gè)塊和其子塊可
21、見,子塊聲明與父塊同名異常,會(huì)覆蓋父塊聲明的異常語法.71異常處理異常處理- -處理異常處理異常示例自定義異常.72異常處理異常處理- -處理異常處理異常示例自定義異常.73異常處理異常處理- -處理異常處理異常異常觸發(fā)異常捕獲與傳播.74異常處理異常處理- -處理異常處理異常異常觸發(fā)對于預(yù)定義異常,一個(gè)與異常相關(guān)的錯(cuò)誤發(fā)生的時(shí)候,就會(huì)自動(dòng)觸發(fā)該異常,也可以使用RAISE語句顯式觸發(fā)對于自定義異常,必須在代碼中使用RAISE語句顯式觸發(fā).75異常處理異常處理- -處理異常處理異常示例預(yù)定義異常.76異常處理異常處理- -處理異常處理異常示例自定義異常.77異常處理異常處理- -處理異常處理異常
22、- -異常捕獲與傳播異常捕獲與傳播處理原則只有PL/SQL代碼塊執(zhí)行部分觸發(fā)的異常才會(huì)被相應(yīng)代碼塊合適的異常處理部分捕獲如果觸發(fā)異常的PL/SQL代碼塊沒有合適異常處理部分,則異常會(huì)傳播到該代碼塊的父代碼塊的合適的異常處理部分如果在父代碼塊仍未找到合適的異常處理部分,則繼續(xù)往上傳播異常,直至找到合適的異常處理部分找到合適的異常處理部分并執(zhí)行后,同一語句塊的其他異常處理部分不會(huì)被執(zhí)行,即使執(zhí)行的合適的異常處理部分再次觸發(fā)異常如果最后仍然沒有照到合適的異常處理部分,則將控制權(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用途代表未知異常在無法預(yù)測或不想指明要捕獲的異常類型時(shí)使用一個(gè)PL/SQL代碼塊如果有多個(gè)異常處理語句,帶OTHERS的異常處理語句必須放在最后.82異常處理異常處理- -處理異常處理異常- -異常捕獲與傳播異常捕獲與傳播示例異常處理部分觸發(fā)的異常.83異常處理異常處理- -處
24、理異常處理異常- -異常捕獲與傳播異常捕獲與傳播示例異常處理部分觸發(fā)的異常.84異常處理異常處理- -編譯指令編譯指令EXCEPTION_INIT用途將ORACLE錯(cuò)誤代碼與自定義異常關(guān)聯(lián)發(fā)生相應(yīng)錯(cuò)誤時(shí),轉(zhuǎn)換為異常,使用異常機(jī)制處理錯(cuò)誤語法.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 寄存對象u 內(nèi)置函數(shù)u 異常處理.88寄存對象寄存對象 過程 函數(shù) 包 觸發(fā)器.89寄存對象寄存對象- -過程過程什么是過程聲明過程調(diào)用過程刪除過程.90寄存對象寄存對象- -過程過程- -什么是過程什么是過程概念過程是特殊的PL/SQL代碼塊,在普通代碼塊基礎(chǔ)上加上過程聲明語句Procedure.再加上參數(shù),代碼塊就變?yōu)檫^程過程可以編譯到數(shù)據(jù)庫中,編譯后自動(dòng)保存在數(shù)據(jù)庫中過程可以通過名稱和包、schema等限定詞被其他代碼調(diào)用過程參數(shù)有IN/OUT/IN OUT三種類型,其中IN類型可以被過程體引用,但不能改寫值;OUT類型不可被過程體引用,但可改寫值;IN OUT
26、既可以被過程體引用,又可以改寫值.91寄存對象寄存對象- -過程過程- -聲明過程聲明過程語法是.92寄存對象寄存對象- -過程過程- -聲明過程聲明過程示例新建一個(gè)部門,名稱由參數(shù)指定.93寄存對象寄存對象- -過程過程- -聲明過程聲明過程示例復(fù)制參數(shù)1指定的部門及其員工,部門名稱和員工姓名在原來名稱前加上”copied by 參數(shù)2 ”,員工號(hào)碼為序列值.94寄存對象寄存對象- -過程過程- -聲明過程聲明過程示例復(fù)制參數(shù)1指定的部門及其員工,部門名稱和員工姓名在原來名稱前加上”copied by 參數(shù)2 ”,員工號(hào)碼為序列值(續(xù)).95寄存對象寄存對象- -過程過程- -聲明過程聲明過
27、程示例將參數(shù)1指定的部門,工資低于參數(shù)2指定的工資,增加參數(shù)3,并返回是否更新成功,以及相應(yīng)的提示信息.96寄存對象寄存對象- -過程過程- -聲明過程聲明過程示例將參數(shù)1指定的部門,工資低于參數(shù)2指定的工資,增加參數(shù)3,并返回是否更新成功,以及相應(yīng)的提示信息(續(xù)).97寄存對象寄存對象- -過程過程- -調(diào)用過程調(diào)用過程方法位置標(biāo)志法帶名標(biāo)志法.98寄存對象寄存對象- -過程過程- -調(diào)用過程調(diào)用過程示例位置標(biāo)志法.99寄存對象寄存對象- -過程過程- -調(diào)用過程調(diào)用過程示例帶名標(biāo)志法.100寄存對象寄存對象- -過程過程- -刪除過程刪除過程語法DROP PROCEDURE procedu
28、re_name;示例DROP PROCEDURE p_copy_dept_and_emp;.101寄存對象寄存對象- -函數(shù)函數(shù)什么是函數(shù)聲明函數(shù)調(diào)用函數(shù)刪除函數(shù).102寄存對象寄存對象- -函數(shù)函數(shù)- -什么是函數(shù)什么是函數(shù)概念過程是特殊的PL/SQL代碼塊,在普通代碼塊基礎(chǔ)上加上過程聲明語句Function. Return Type再加上參數(shù),代碼塊就變?yōu)楹瘮?shù)函數(shù)可以編譯到數(shù)據(jù)庫中,編譯后自動(dòng)保存在數(shù)據(jù)庫中函數(shù)可以通過名稱和包、schema等限定詞被其他代碼調(diào)用函數(shù)參數(shù)有IN/OUT/IN OUT三種類型,其中IN類型可以被函數(shù)體引用,但不能改寫值;OUT類型不可被函數(shù)體引用,但可改寫值;
29、IN OUT 既可以被函數(shù)體引用,又可以改寫值函數(shù)有返回值,只能返回一個(gè)值.103寄存對象寄存對象- -函數(shù)函數(shù)語法.104寄存對象寄存對象- -函數(shù)函數(shù)示例將參數(shù)1指定的部門的所有員工姓名連接起來,中間用逗號(hào)隔開.105寄存對象寄存對象- -函數(shù)函數(shù)- -調(diào)用函數(shù)調(diào)用函數(shù)方法位置標(biāo)志法帶名標(biāo)志法.106寄存對象寄存對象- -函數(shù)函數(shù)- -調(diào)用函數(shù)調(diào)用函數(shù)示例位置標(biāo)志法.107寄存對象寄存對象- -函數(shù)函數(shù)- -調(diào)用函數(shù)調(diào)用函數(shù)示例帶名標(biāo)志法.108寄存對象寄存對象- -函數(shù)函數(shù)- -刪除函數(shù)刪除函數(shù)語法DROP FUNCTION procedure_name;示例DROP FUNCTION
30、fn_get_emp_name;.109寄存對象寄存對象- -包包什么是包聲明包調(diào)用包刪除包.110寄存對象寄存對象- -包包- -什么是包什么是包概念包是是特殊的PL/SQL代碼塊,是過程、函數(shù)、變量的容器包可以編譯到數(shù)據(jù)庫中,編譯后自動(dòng)保存在數(shù)據(jù)庫中可以通過包名、schema等限定詞調(diào)用包中的其他數(shù)據(jù)庫對象包分包頭和包體,通過PACKAGE和PACKAGE BODY關(guān)鍵詞分別聲明包頭和包體.111寄存對象寄存對象- -包頭包頭語法.112寄存對象寄存對象- -包體包體示例.113寄存對象寄存對象- -包包- -聲明包聲明包示例包頭.114寄存對象寄存對象- -包包- -聲明包聲明包示例包體
31、.115寄存對象寄存對象- -包包- -調(diào)用包對象調(diào)用包對象方法位置標(biāo)志法帶名標(biāo)志法.116寄存對象寄存對象- -包包- -調(diào)用函數(shù)調(diào)用函數(shù)示例位置標(biāo)志法.117寄存對象寄存對象- -包包- -調(diào)用函數(shù)調(diào)用函數(shù)示例帶名標(biāo)志法.118寄存對象寄存對象- -包包- -刪除包刪除包語法DROP PACKAGE package_name;示例DROP PACKAGE PKG_SQL_APP;.119寄存對象寄存對象- -觸發(fā)器觸發(fā)器什么是觸發(fā)器聲明觸發(fā)器調(diào)用觸發(fā)器刪除觸發(fā)器.120寄存對象寄存對象- -觸發(fā)器觸發(fā)器- -什么是觸發(fā)器什么是觸發(fā)器概念過程是特殊的PL/SQL代碼塊,在普通代碼塊基礎(chǔ)上加上
32、聲明語句Trigger. Before/After On等關(guān)鍵字后,代碼塊就變?yōu)橛|發(fā)器觸發(fā)器可以編譯到數(shù)據(jù)庫中,編譯后自動(dòng)保存在數(shù)據(jù)庫中觸發(fā)器在按定義時(shí)指定表數(shù)據(jù)變化的事件中自動(dòng)被調(diào)用表數(shù)據(jù)變化事件包括新增、更新、刪除.121寄存對象寄存對象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器語法.122寄存對象寄存對象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器示例.123寄存對象寄存對象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器示例.124寄存對象寄存對象- -觸發(fā)器觸發(fā)器- -聲明觸發(fā)器聲明觸發(fā)器示例.125寄存對象寄存對象- -觸發(fā)器觸發(fā)器- -調(diào)用觸發(fā)器調(diào)用觸發(fā)器方法:系統(tǒng)自動(dòng)調(diào)用表數(shù)據(jù)新
33、增表數(shù)據(jù)更新表數(shù)據(jù)刪除.126寄存對象寄存對象- -觸發(fā)器觸發(fā)器- -刪除觸發(fā)器刪除觸發(fā)器語法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 寄存對象u 內(nèi)置函數(shù)u 異常處理.128內(nèi)置函數(shù)內(nèi)置函數(shù)概念內(nèi)置函數(shù)是Oracle提供的、預(yù)定義好的函數(shù)內(nèi)置函數(shù)不用聲明或引用包就可以使用分類多行函數(shù),對查詢返回的數(shù)據(jù)的多行起作用,多行函數(shù)在SELECT語句中,配合GROUP BY一起使用單行函數(shù),對查詢返回的數(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用途返回絕對值語法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用途返回字符長度語法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ì)算長度語法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)為小寫,參數(shù)字符串中可包含非字符,如數(shù)字,特殊符號(hào)等語法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)為大寫語法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ù)字型語法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)為字符將日期類轉(zhuǎn)為字符型,按一定格式語法TO_CHAR(string_param)TO_CHAR(dat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)新創(chuàng)業(yè)教育對學(xué)生綜合能力提升的影響
- 從教育到創(chuàng)業(yè)全面解析家庭財(cái)富增值方法論
- 中藥材與家庭健康關(guān)系解析
- 2025年成都貨運(yùn)從業(yè)資格證試題庫及答案解析
- 從預(yù)算到落地實(shí)驗(yàn)室儀器設(shè)備的采購全流程解析
- 體育教育與足球隊(duì)訓(xùn)練計(jì)劃的相互影響
- 2025年恩施駕??荚嚳拓涍\(yùn)從業(yè)資格證考試題庫
- 2025年蘇州駕??荚嚳拓涍\(yùn)從業(yè)資格證考試題庫
- 親子運(yùn)動(dòng)安全教育與提升生活質(zhì)量的探索研究
- 2025年山西貨運(yùn)從業(yè)資格證考試模擬題庫答案
- 2024年天然氣管道施工環(huán)保勞務(wù)合同范本3篇
- 防范非法金融宣傳
- 重癥監(jiān)護(hù)室搶救制度
- 咨詢經(jīng)理招聘面試題與參考回答(某大型國企)2025年
- 統(tǒng)編版(2024)七年級(jí)上冊道德與法治第四單元學(xué)情調(diào)研測試卷(含答案)
- 小學(xué)語文骨干教師專題講座《自由閱讀-開啟快樂的讀書之門》
- 華為經(jīng)營管理-華為激勵(lì)機(jī)制(6版)
- 2024年社會(huì)工作者-社會(huì)綜合能力考試歷年真題
- 人力資源的降本增效操作
- 機(jī)場航班信息LED顯示屏方案
- 村級(jí)財(cái)務(wù)課件教學(xué)課件
評論
0/150
提交評論