包和子程序[考試復習]_第1頁
包和子程序[考試復習]_第2頁
包和子程序[考試復習]_第3頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、.1 過程過程語法結構:Create or replace procedure 存儲過程名稱 as 創(chuàng)建或重定義存儲過程名稱,Begin執(zhí)行過程的語句塊End;執(zhí)行語句塊用begin和end包圍,相當于程序中的,表示語句塊的開始和結束Create or replace procedure 存儲過程名稱(參數1,參數2) as 創(chuàng)建或重定義存儲過程名稱,Begin執(zhí)行過程的語句塊End;要點:1. 參數默認是輸入參數,注明out為輸出參數 in out為輸入輸出參數2. 沒有參數的過程和函數,在過程名稱后面不用帶()括號3. 有參數的過程和函數,形式參數的數據類型不需要指定長度4. 局部變量放在

3、 as 和begin之間,begin和end之間是plsql語句塊示例:create or replace procedure pro1 asbegindbms_output.put_line(dd);end;create or replace procedure pro2(v_val1 in out varchar2,v_val2 in out varchar2) asbegin dbms_output.put_line(v_val1:|v_val1); dbms_output.put_line(v_val2:|v_val2);end;1.4.2 函數函數的語法結構和過程類似,區(qū)別在于多了一

4、個返回值Create or replace function 函數名稱 return 類型 as創(chuàng)建或重定義函數,必須帶return和返回一個數據的類型Begin 函數執(zhí)行的語句塊 return 返回值 返回值,和創(chuàng)建函數聲明中返回類型要一致End;示例:create or replace function fun1 return varchar2 asbeginreturn ddd;end;create or replace function fun2(v_val1 in out varchar2,v_val2 in out varchar2) return varchar2 asbegin

5、dbms_output.put_line(v_val1:|v_val1); dbms_output.put_line(v_val2:|v_val2);return ddd;end;1.4.3 過程和函數在plsql中調用在plsql語句塊中調用函數和過程declarev_val1 varchar2(200):=aaaa;v_val2 varchar2(200):=dddd;v_result varchar2(400);begin -調用過程1 pro1; -調用過程2 pro2(v_val1,v_val2); -調用函數1 v_result:=fun1; -調用函數2 v_result:=fu

6、n2(v_val1,v_val2);end;要點:1. 過程可以再sqlplus命令行方式下調用,也可以再plsql語句塊中調用,而函數只能在plsql語句塊中調用。2. 過程在命令行下調用使用 call 過程名,在plsql中調用不需要call1.4.4 包包的概念是將某一系列的函數或過程進行封裝打包以便于管理和方便使用,創(chuàng)建包分為創(chuàng)建包體和創(chuàng)建包體2部分1.4.4.1 包頭create or replace package pak1 as-定義數據類型type curemptype is ref cursor;count int;-定義包的過程和函數procedure getrecord(

7、curemp_ref out curemptype);end;要點:在包頭中定義引用游標類型和在plsql語句塊declare部分定義有一點區(qū)別,在類型名后多一個is1.4.4.2 包體create or replace package body pak1 asprocedure getrecord(curemp_ref out curemptype) asbegin open cur_emp for select * from emp;end;end;要點:返回引用游標的存儲過程只在過程中打開游標1.5 作業(yè)以scott示例用戶表為基礎編寫存儲過程1. 編寫一個過程,通過參數傳遞部門編號,查詢并打印相關部門的員工姓名、工作、入職日期、薪金等詳細信息。2. 編寫一個函數,給工作是辦事員的員工加薪30%,給工作是銷售的加薪50%要求使用游標,函數返回修改的記錄個數。3. 編寫一個可供java程序調用的存儲過程,過程參數定義為輸入輸出的引用游標,返回emp表的記錄集4. 另外有一個網上商城的系統(tǒng),為了這個系統(tǒng)創(chuàng)建一個訂單處理的包,這個包中有一個存儲過程,用于刪除訂單,在刪除訂單的時候

溫馨提示

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

最新文檔

評論

0/150

提交評論