Oracle數(shù)據(jù)庫第講四_第1頁
Oracle數(shù)據(jù)庫第講四_第2頁
Oracle數(shù)據(jù)庫第講四_第3頁
Oracle數(shù)據(jù)庫第講四_第4頁
Oracle數(shù)據(jù)庫第講四_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

oracle第5講1.pl/sql的介紹2.pl/sql的基礎(chǔ)主講李珩oracle數(shù)據(jù)庫pl/sql的介紹■pl/sql是什么pl/sql(procedurallanguage/sql)是oracle在標準的sql語言上的擴展.pl/sql不僅允許嵌入sql語言,還可以定義變量和常量,允許使用條件語句和循環(huán)語句,允許使用例外處理各種錯誤,這樣使得它的功能變得更加強大?!鰧W習必要性[圖]①提高應(yīng)用程序的運行性能②模塊化的設(shè)計思想[分頁的過程,訂單的過程,轉(zhuǎn)賬的過程..]③減少網(wǎng)絡(luò)傳輸量④提高安全性■缺點移植性不好.

主講李珩oracle數(shù)據(jù)庫pl/sql的介紹—用什么開發(fā)pl/sql■

sqlplus開發(fā)工具sqlplus是oracle公司提供的一個工具,這個因為我們在以前介紹過的:舉一個簡單案例:編寫一個存儲過程,該過程可以向某表中添加記錄.■

pl/sqldeveloper開發(fā)工具pl/sqldeveloper是用于開發(fā)pl/sql塊的集成開發(fā)環(huán)境(ide),他是一個獨立的產(chǎn)品,而不是oracle的一個附帶品。舉一個簡單案例:編寫一個存儲過程,該過程可以刪除某表記錄.主講李珩oracle數(shù)據(jù)庫創(chuàng)建過程基本語法:createprocedure過程名(參數(shù)1…)isbegin執(zhí)行語句;end;/執(zhí)行過程語法:exec

過程名(傳入?yún)?shù)…)pl/sql基礎(chǔ)知識—介紹■

介紹開發(fā)人員使用pl/sql編寫應(yīng)用模塊時,不僅需要掌握sql語句的編寫方法,還要掌握pl/sql語句及語法規(guī)則。pl/sql編程可以使用變量和邏輯控制語句,從而可以編寫非常有用的功能模塊。比如:分頁存儲過程模塊、訂單處理存儲過程模塊、轉(zhuǎn)賬存儲過程模塊..而且如果使用pl/sql編程,我們可以輕松的完成非常復雜的查詢要求.等學習了pl/sql編程基礎(chǔ)再講吧主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql可以做什么■

簡單分類

|-----過程(存儲過程) | |-----函數(shù) 塊(編程)-------| |-----觸發(fā)器

| |-----包分分類吧主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—編寫規(guī)范■

編寫規(guī)范①注釋單行注釋--多行注釋/*....*/來劃分②標識符號的命名規(guī)范1)當定義變量時,建議用v_作為前綴v_sal2)當定義常量時,建議用c_作為前綴c_rate3)當定義游標時,建議用_cursor作為后綴emp_cursor;4)當定義例外時,建議用e_作為前綴e_error

主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql塊介紹■

介紹塊(block)是pl/sql的基本程序單元,編寫pl/sql程序?qū)嶋H上就是編寫pl/sql塊。要完成相對簡單的應(yīng)用功能,可能只需要編寫一個pl/sql塊;但是如果要想實現(xiàn)復雜的功能,可能需要在一個pl/sql塊中嵌套其它的pl/sql塊.

主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql塊結(jié)構(gòu)■

塊結(jié)構(gòu)示意圖pl/sql塊由三個部分構(gòu)成:定義部分、執(zhí)行部分、例外處理部分.如下所示:declare/*定義部分-----定義常量、變量、游標、例外、復雜數(shù)據(jù)類型*/begin/*執(zhí)行部分-----要執(zhí)行的pl/sql語句和sql語句*/exception/*例外處理部分----處理運行的各種錯誤*/end;★可以和java編程結(jié)構(gòu)做一個簡單的比較 定義部分是從declare開始的,該部分是可選的。執(zhí)行部分是從begin開始的,該部分是必須的。例外處理部分是從exception開始的,該部分是可選的主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql實例■

實例1-只包括執(zhí)行部分的pl/sql塊?相關(guān)說明:dbms_output是oracle所提供的包(類似java的開發(fā)包),該包包含一些過程,put_line就是dbms_output包的一個過程。

案例:輸出hello,world主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識—pl/sql實例■

實例2-包含定義部分和執(zhí)行部分的pl/sql塊?相關(guān)說明:&表示要接收從控制臺輸入的變量||表示把兩個串拼接案例:根據(jù)用戶輸入的雇員編號,顯示該雇員的名字主講李珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—pl/sql實例■實例3-包含定義部部分、執(zhí)行行部分和例例外處理部部分為了避免pl/sql程序的運行行錯誤,提提高pl/sql的健壯性,,應(yīng)該對可可能的錯誤進行行處理,這個很有必必要:①比如在實實例2中,如果輸輸入了不存存在的雇員員號,應(yīng)當當做例外處處理.②有時出現(xiàn)異異常,希望望用另外的的邏輯處理理,[網(wǎng)示]比如,如果果不存在就就加入編號號為1,名字為’馬大哈’這么一個人人.我們看看如如何完成①①的要求相關(guān)說明:oracle事先預定義義了一些例例外,no_data_found就是找不到到數(shù)據(jù)的例例外.主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—過程程快速入門■過程過程用于執(zhí)執(zhí)行特定的的操作.當建立過程程時,既可可以指定輸輸入?yún)?shù)(in),也可以指定定輸出參數(shù)數(shù)(out).通過在過程程中使用輸輸入?yún)?shù),,可以將數(shù)數(shù)據(jù)傳遞到到執(zhí)行部分分;通過使使用輸出參參數(shù),可以以將執(zhí)行部部分的數(shù)據(jù)據(jù)傳遞到應(yīng)應(yīng)用環(huán)境.在sqlplus中可以使用用createprocedure命令來建立立過程。實例如下:①請考慮編寫寫一個過程程,可以輸輸入雇員名名,新工資可可修改雇員員的工資②如何調(diào)用用過程有兩兩種方法:exec過程名(參數(shù)值..)call過程名(參數(shù)值..)createprocedure過程名(變量in變量類型…,變量out變量類型…)is定義變量begin執(zhí)行語句;end;主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識——過程快速入門■java中調(diào)用過程③如何在java程序中調(diào)用一一個存儲過程程課堂小練習::編寫一個過過程,可以接接受id和薪水,更新新薪水,如果果id不存在,需要要在exception中捕獲,并給給出提示!需要在控制臺臺,和java程序中都調(diào)用用?如何使用過程程返回值。特別說明:對于過程我們們會在以后給給大家詳細具具體的介紹,,現(xiàn)在請大家家先有一個概概念.主講李珩珩oracle數(shù)據(jù)庫動手體驗:我我們寫一個java程序來調(diào)用前前面的存儲過過程pl/sql基礎(chǔ)知識——函數(shù)快速入門■函數(shù)函數(shù)用于返回回特定的數(shù)據(jù)據(jù),當建立函數(shù)時時,在函數(shù)頭頭部必須包含含return子句,而在函函數(shù)體內(nèi)必須須包含return語句返回的數(shù)數(shù)據(jù)。我們可可以使用createfunction來建立函數(shù),實際案例:在sqlplus中調(diào)用函數(shù)同樣我們可以以在java程序中調(diào)用該該函數(shù)selectannual_income('SCOTT')fromdual;//這樣可以通過rs.getInt(1)得到返回的結(jié)結(jié)果主講李珩珩oracle數(shù)據(jù)庫案例:請編寫寫一個函數(shù),,可以接收用用戶名并返回回該用戶的年年薪.createfunction函數(shù)名(參數(shù)1…)return數(shù)據(jù)類型is定義變量;begin執(zhí)行語句;end;var變量名變量量類型call函數(shù)名(參數(shù)值…)into:變量名;print變量名pl/sql基礎(chǔ)知識——包■包包用于在邏輯輯上組合過程程和函數(shù),它由包規(guī)范和和包體兩部分分組成。①我們可以使使用createpackage命令來創(chuàng)建包包:實例:create[orreplace]package包名isprocedure過程名(變量名變量量類型…);function函數(shù)名(變量名變量量類型…)return數(shù)據(jù)類型;end;包的規(guī)范只包包含了過程和和函數(shù)的說明明,但是沒有有過程和函數(shù)數(shù)的實現(xiàn)代碼。包體用于于實現(xiàn)包規(guī)范范中的過程和和函數(shù),主講李珩珩oracle數(shù)據(jù)庫請編寫一個包包,該包有一一個過程,該該過程可以接接收用戶名和和新的薪水,,(將來用于通通過用戶名去去更新薪水))還有一個函函數(shù),該函數(shù)數(shù)可以接收一一個用戶名((將來要實現(xiàn)現(xiàn)得到該用戶戶的年薪是多多少)pl/sql基礎(chǔ)知識——包②建立包體可以以使用createpackagebody命令createorreplacepackagebody包名isprocedure過程名(變量名變量量類型…)isbegin執(zhí)行語句;end;function函數(shù)名(變量名變量量類型…)return數(shù)據(jù)類型is定義變量;begin執(zhí)行語句;end;end;主講李珩珩oracle數(shù)據(jù)庫案例:請實現(xiàn)現(xiàn)前面定義的的包中的過程程和函數(shù)pl/sql基礎(chǔ)知識——包③如何調(diào)用包的的過程或是函函數(shù)當調(diào)用包的過過程或是函數(shù)數(shù)時,在過程程和函數(shù)前需需要帶有包名名,如果要訪問其它方案案的包,還需需要在包名前前加方案名.如:特別說明:包是pl/sql中非常重要的的部分,我們們在使用過程程分頁時,將將會再次體驗驗它的威力。主講李珩珩oracle數(shù)據(jù)庫exec方案名.包名.過程名(參數(shù)值..);call方案名.包名.過程名(參數(shù)值…);測試前面包中中的函數(shù)和過過程名是否正正確調(diào)用!pl/sql基礎(chǔ)知識——觸發(fā)器■觸發(fā)器簡單介介紹觸發(fā)器是指隱隱含的執(zhí)行的的存儲過程。當定義觸發(fā)發(fā)器時,必須須要指定觸發(fā)發(fā)的事件和觸觸發(fā)的操作,,常用的觸發(fā)發(fā)事件包括insert,update,delete語句,,而觸觸發(fā)操操作實實際就就是一一個pl/sql塊??煽梢允故褂胏reatetrigger來建立立觸發(fā)發(fā)器。。特別說說明:我們會會在后面詳詳細為大家家介紹紹觸發(fā)發(fā)器的的使用用,因因為觸觸發(fā)器器是非非常有有用的的,可維護護數(shù)據(jù)據(jù)庫的的安全全和一一致性性。主講李李珩珩oracle數(shù)據(jù)庫庫pl/sql基基礎(chǔ)知知識——定義義并使使用變變量■介紹在編寫寫pl/sql程序時時,可可以定定義變變量和和常量量;在在pl/sql程序中中包括有有:①標量類類型(scalar)②復合類類型(composite)③參照類類型(reference)④lob(largeobject)主講李李珩珩oracle數(shù)據(jù)庫庫pl/sql基基礎(chǔ)知知識——定義義并使使用變變量■標量(scalar)-常用類類型在編編寫寫pl/sql塊時時,如果果要要使使用用變變量量,需在在定定義義部部分分定定義義變變量量。。pl/sql中定定義義變變量量和和常常量量的的語語法法如如下下:identifier[constant]datatype[notnull][:=|defaultexpr]identifier:名稱稱constant:指定定常常量量.需要要指指定定它它的的初初始始植植,且其其值值是是不不能能改改變變的的datatype:數(shù)據(jù)據(jù)類類型型notnull:指定定變變量量值值不不能能為為null:=給變變量量或或是是常常量量指指定定初初始始植植default用于于指指定定初初始始植植expr:指定定初初始始植植的的pl/sql表達達式式,可是是文文本本值值、、其其它它變變量量、、函函數(shù)數(shù)等等舉例例說說明明吧吧主講講李李珩珩oracle數(shù)據(jù)據(jù)庫庫pl/sql基基礎(chǔ)礎(chǔ)知知識識——定定義義并并使使用用變變量量■標量量定定義義的的案案例例①定義一個個變長字符符串v_enamevarchar2(10);②定義一個小小數(shù)范圍圍-9999.99~9999.99v_sal number(6,2);③定義一個小小數(shù)并給一一個初始植植為5.4:=是pl/sql的賦值號v_sal2 number(6,2):=5.4④定義一個日日期類型的的數(shù)據(jù)v_hiredate date;⑥定義一個布布爾變量,,不能為空空,初始植植為falsev_validbooleannotnulldefaultfalse;主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—定義義并使用變變量■標量(scalar)-使用標量在定義好變變量后,就就可以使用用這些變量量。這里需需要說明的的是pl/sql塊為變量賦賦值不同于于其它的編編程語言,,需要在等等號前加冒冒號(:=)案例:以輸輸入員工號號,顯示雇雇員姓名、、工資、個人所得稅稅(稅率為0.03)為例。說明明變量的使使用,看看如何編編寫.主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—定義義并使用變變量■標量(scalar)-使用%type類型對于上面的的pl/sql塊有一個問問題:就是如果員員工的姓名名超過了5字符的話,,就會有錯錯誤,為了了降低pl/sql程序的維護護工作量,,可以使用%type屬性定義變變量,這樣樣它會按照照數(shù)據(jù)庫列列來確定你你定義的變變量的類型型和長度,我們看看這這個怎么使使用:標識符名表表名.列名%type;主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知知識—定義義并使用變變量■復合變量(composite)-介紹用于存放多多個值的變變量。常用用的包括這這:①pl/sql記錄②pl/sql表主講李珩珩oracle數(shù)據(jù)庫pl/sql基礎(chǔ)知識——定義并使用用變量■復合類型-pl/sql記錄類似與高級語語言中的結(jié)構(gòu)構(gòu)體,需要注意的的是,當引用用pl/sql記錄成員員時,必須要要加記錄變量量作為前綴(記錄變量.記錄成員)如下:主講李珩珩oracle數(shù)據(jù)庫請編寫一個過過程,該過程程可以接收一一個用戶編號號,并顯示該該用戶的名字字,薪水,工工作崗位(注意:要求求用pl/sql記錄實現(xiàn))type自定義的pl/sql記錄名isrecord(變量名變量量類型,變量名變量量類型,);//使用自定義的的pl/sql記錄變量名自定定義的pl/sql記錄名;pl/sql基礎(chǔ)知識——定義并使用用變量■復合類型-pl/sql表(了解即可)相當于高級語語言中的數(shù)組組.但是是需要要注意意的是是在高高級語語言中中數(shù)組組的下下標不不能為為負數(shù)數(shù),而而pl/sql是可可以為為負數(shù)數(shù)的,并且且表元元素的的下標標沒有有限制制.實實例如如下declaretypeaa_table_typeistableofemp.ename%typeindexbybinary_integer;aa_tableaa_table_type;--定義一一個變變量:aa_table:類型beginselectenameintoaa_table(-1)fromempwhereempno=7788;dbms_output.put_line('員員工名名:'||aa_table(-1));end;說明::aa_table_type是是pl/sql表類類型emp.ename%type指指定了了表的的元素素的類類型和和長度度aa_table為為pl/sql表表變量量aa_table(0)則表表示下下標為為0的的元素素主講李李珩珩oracle數(shù)據(jù)庫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論