07第七章 包和子程序

上傳人:仙*** 文檔編號:137930980 上傳時間:2022-08-19 格式:DOC 頁數(shù):4 大?。?2.73KB
收藏 版權申訴 舉報 下載
07第七章 包和子程序_第1頁
第1頁 / 共4頁
07第七章 包和子程序_第2頁
第2頁 / 共4頁
07第七章 包和子程序_第3頁
第3頁 / 共4頁

下載文檔到電腦,查找使用更方便

10 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《07第七章 包和子程序》由會員分享,可在線閱讀,更多相關《07第七章 包和子程序(4頁珍藏版)》請在裝配圖網上搜索。

1、 第七章 包和子程序 1.1 目標 1. 過程和函數(shù) 2. 過程和函數(shù)在plsql中調用 3. 包 1.2 知識點 1. 過程和函數(shù)的作用,語法結構,參數(shù)的類型 2. 在plsql語句塊中調用函數(shù)和過程 3. 包和包體的作用,語法結構 1.3 難點 1. 過程和函數(shù)的作用,語法結構,參數(shù)的類型 2. 包和包體的作用,語法結構 1.4 講解內容 前面Plsql是匿名的存儲過程,可以批量執(zhí)行sql操作,并且可以加入條件控制,但是每次執(zhí)行的plsql腳本不能在服務器端保存,而過程和函數(shù)可以將plsql語句塊按功能劃分,并保存起來,實現(xiàn)代碼的復用,簡單的講,過程

2、和函數(shù)是對plsql語句塊的封裝,是有名字的plsql語句塊。 1.4.1 過程 過程語法結構: Create or replace procedure 存儲過程名稱 as ?創(chuàng)建或重定義存儲過程名稱, Begin 執(zhí)行過程的語句塊… End; ?執(zhí)行語句塊用begin和end包圍,相當于程序中的{},表示語句塊的開始和結束 Create or replace procedure 存儲過程名稱(參數(shù)1,參數(shù)2) as ?創(chuàng)建或重定義存儲過程名稱, Begin 執(zhí)行過程的語句塊… End; 要點: 1. 參數(shù)默認是輸入?yún)?shù),注明out為輸出參數(shù) in out為

3、輸入輸出參數(shù) 2. 沒有參數(shù)的過程和函數(shù),在過程名稱后面不用帶()括號 3. 有參數(shù)的過程和函數(shù),形式參數(shù)的數(shù)據(jù)類型不需要指定長度 4. 局部變量放在 as 和begin之間,begin和end之間是plsql語句塊 示例: create or replace procedure pro1 as begin dbms_output.put_line('dd'); end; create or replace procedure pro2(v_val1 in out varchar2,v_val2 in out varchar2) as begin dbms_o

4、utput.put_line('v_val1:'||v_val1); dbms_output.put_line('v_val2:'||v_val2); end; 1.4.2 函數(shù) 函數(shù)的語法結構 和過程類似,區(qū)別在于多了一個返回值 Create or replace function 函數(shù)名稱 return 類型 as ?創(chuàng)建或重定義函數(shù),必須帶return和返回一個數(shù)據(jù)的類型 Begin 函數(shù)執(zhí)行的語句塊 return 返回值 ?返回值,和創(chuàng)建函數(shù)聲明中返回類型要一致 End; 示例: create or replace functio

5、n fun1 return varchar2 as begin return 'ddd'; end; create or replace function fun2(v_val1 in out varchar2,v_val2 in out varchar2) return varchar2 as begin dbms_output.put_line('v_val1:'||v_val1); dbms_output.put_line('v_val2:'||v_val2); return 'ddd'; end; 1.4.3 過程和函數(shù)在plsql中調用 在plsql

6、語句塊中調用函數(shù)和過程 declare v_val1 varchar2(200):='aaaa'; v_val2 varchar2(200):='dddd'; v_result varchar2(400); begin --調用過程1 pro1; --調用過程2 pro2(v_val1,v_val2); --調用函數(shù)1 v_result:=fun1; --調用函數(shù)2 v_result:=fun2(v_val1,v_val2); end; 要點: 1. 過程可以再sqlplus命令行方式下調用,也可以再plsql語句塊中調用,而函數(shù)只能在p

7、lsql語句塊中調用。 2. 過程在命令行下調用使用 call 過程名,在plsql中調用不需要call 1.4.4 包 包的概念是將某一系列的函數(shù)或過程進行封裝打包以便于管理和方便使用,創(chuàng)建包分為創(chuàng)建包體和創(chuàng)建包體2部分 1.4.4.1 包頭 create or replace package pak1 as --定義數(shù)據(jù)類型 type curemptype is ref cursor; count int; --定義包的過程和函數(shù) procedure getrecord(curemp_ref out curemptype); end; 要點:在包頭中定義

8、引用游標類型和在plsql語句塊declare部分定義有一點區(qū)別,在類型名后多一個is 1.4.4.2 包體 create or replace package body pak1 as procedure getrecord(curemp_ref out curemptype) as begin open cur_emp for select * from emp; end; end; 要點:返回引用游標的存儲過程只在過程中打開游標 1.5 作業(yè) 以scott示例用戶表為基礎編寫存儲過程 1. 編寫一個過程,通過參數(shù)傳遞部門編號,查詢并打印相關部門

9、的員工姓名、工作、入職日期、薪金等詳細信息。 2. 編寫一個函數(shù),給工作是辦事員的員工加薪30%,給工作是銷售的加薪50%要求使用游標,函數(shù)返回修改的記錄個數(shù)。 3. 編寫一個可供java程序調用的存儲過程,過程參數(shù)定義為輸入輸出的引用游標,返回emp表的記錄集 4. 另外有一個網上商城的系統(tǒng),為了這個系統(tǒng)創(chuàng)建一個訂單處理的包,這個包中有一個存儲過程,用于刪除訂單,在刪除訂單的時候要求訂單式新建或中止狀態(tài)的才可以刪除,否則拋出異常信息。還有一個函數(shù),用于計算指定訂單編號的總金額,每個訂單有1個或多個子項,每個子項有單價和數(shù)量,函數(shù)有一個參數(shù)接收訂單編號返回訂單金額。 以上存儲過程和函數(shù)都要采用包的方式創(chuàng)建。

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!