Les12_PLSQL程序設(shè)計_第1頁
Les12_PLSQL程序設(shè)計_第2頁
Les12_PLSQL程序設(shè)計_第3頁
Les12_PLSQL程序設(shè)計_第4頁
Les12_PLSQL程序設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PLSQLPLSQL程序設(shè)計程序設(shè)計王法印目標(biāo)通過本章學(xué)習(xí),您將可以:PL/SQL程序結(jié)構(gòu)及組成PL/SQL的應(yīng)用最簡單的PL/SQL程序在屏幕上打印”Hello World!”lJava程序lPL/SQL程序l注意:如果要在屏幕上輸出信息,需要將serveroutput開關(guān)打開l set serveroutput onPL/SQL程序結(jié)構(gòu)及組成什么是PL/SQL? PL/SQL(Procedure Language/SQL) PLSQL是Oracle對sql語言的過程化擴展 指在SQL命令語言中增加了過程處理語句(如分支、循環(huán)等),使SQL語言具有過程處理能力。PL/SQL的提出例1. 為職

2、工漲工資,每人漲10的工資。例2: 按職工的職稱漲工資,總裁漲1000元,經(jīng)理漲800元,其他人員漲400元。Update emp set sal=sal*1.1lSQL優(yōu)點l交互式非過程化;l數(shù)據(jù)操縱功能強;l自動導(dǎo)航語句簡單;l調(diào)試容易使用方便。PL/SQL程序結(jié)構(gòu)declare 說明部分 (變量說明,光標(biāo)申明,例外說明 begin 語句序列 (DML語句 exception 例外處理語句 End;/變量和常量說明l說明l記錄變量分量的引用:emp_rec.ename:=ADAMS;說明變量名、數(shù)據(jù)類型和長度后用分號結(jié)束說明語句。引用型變量,即my_name的類型與emp表中ename列的

3、類型一樣記錄型變量IF語句1. IF 條件 THEN 語句1; 語句2;2. IF 條件 THEN 語句序列1; ELSE 語句序列 2; END IF;3. IF 條件 THEN 語句; 語句 THEN 語句; ELSE 語句; END IF;IF語句示例:判斷用戶輸入的數(shù)字,打印相關(guān)信息 按1:查詢套餐流量,2:查詢話費信息,其他:人工客服提示: 從鍵盤輸入:accept num prompt 請輸入一個數(shù)字; 得到鍵盤輸入的值:pnum number := #北京傳智播客教育 循環(huán)語句WHILE total 10; dbms_output.put_line(第|i); i

4、:=i+1; end loop; end;示例:按員工的工種漲工資,總裁1000元,經(jīng)理長800元其,他人員長400元。l問題1:返回多行l(wèi)問題2:沒有指定where條件光標(biāo)(Cursor)=ResultSet說明光標(biāo)語法:CURSOR 光標(biāo)名 (參數(shù)名 數(shù)據(jù)類型,參數(shù)名 數(shù)據(jù)類型.) IS SELECT 語句;用于存儲一個查詢返回的多行數(shù)據(jù)例如:cursor c1 is select ename from emp;打開光標(biāo): open c1; (打開光標(biāo)執(zhí)行查詢)取一行光標(biāo)的值:fetch c1 into pjob; (取一行到變量中)關(guān)閉光標(biāo): close c1;(關(guān)閉游標(biāo)釋放資源)注意:

5、 上面的pjob必須與emp表中的job列類型一致: 定義:pjob emp.empjob%type;l演示:使用游標(biāo)查詢員工姓名和工資,并打印示例: 按員工的工種漲工資,總裁(PRESIDENT)1000元,經(jīng)理(MANAGER)800元其,他人員(CLERK,SALESMAN,ANALYST)400帶參數(shù)的光標(biāo) cursor c2(jobc varchar2) is select ename, sal from emp where job=jobc;帶參數(shù)的光標(biāo)示例:寫一段PL/SQL程序,為部門號為10的員工漲工資。例外例外是程序設(shè)計語言提供的一種功能,用來增強程序的健壯性和容錯性。ex

6、ception when 例外名稱 then 具體處理 when 例外名稱 then 具體處理 when others then 具體處理Oracle的異常處理系統(tǒng)定義例外 No_data_found (沒有找到數(shù)據(jù)) Too_many_rows (select into語句匹配多個行) Zero_Divide ( 被零除) Value_error (算術(shù)或轉(zhuǎn)換錯誤) Timeout_on_resource (在等待資源時發(fā)生超時)用戶定義的例外演示:系統(tǒng)定義例外(被0除 Zero_Divide)用戶定義例外及處理例外在declare節(jié)中定義例外 out_of exception ; 在可行語

7、句中引起例外 raise out_of ; 在Exception節(jié)處理例外 when Out_of then 演示:用戶定義例外及處理例外-演示:自定義例外declare cursor c1 is select ename from emp where deptno =90; no_data exception; pname emp.ename%type;beginopen c1; fetch c1 into pname; if c1%notfound then raise no_data; end if; exception when no_data then dbms_output.put

8、_line(fetch語句沒有獲得數(shù)據(jù)或數(shù)據(jù)已經(jīng)處理完);end;賦值語句var1:=this is a argument;emp_rec.sal: = sal *2 + nvl(comm, 0);sum_sal:=sum_sal+v_sal;FETCH c1 INTO e_eno , e_sal ;COMMIT語句結(jié)束當(dāng)前事務(wù), 使當(dāng)前事務(wù)所執(zhí)行的全部修改永久化。ROLLBACK 回滾數(shù)據(jù)注釋- This is a comment 或/* This is a comment */實例1:統(tǒng)計每年入職的員工個數(shù)。使用PL/SQL 重寫第六講的例子。實例2:(使用scott用戶下的emp表)為員工漲工資。從最低工資調(diào)起每人漲10,但工資總額不能超過5萬元,請計算漲工資的人數(shù)和漲工資后的工資總額,并輸出輸出漲工資人數(shù)及工資總額??赡苡玫降腟QL語句: select empno,sal from emp order by sal ; select sum(sal) into s_sal from emp;實例

溫馨提示

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

評論

0/150

提交評論