oracle plsql 編程 存儲(chǔ)過程.docx_第1頁
oracle plsql 編程 存儲(chǔ)過程.docx_第2頁
oracle plsql 編程 存儲(chǔ)過程.docx_第3頁
oracle plsql 編程 存儲(chǔ)過程.docx_第4頁
oracle plsql 編程 存儲(chǔ)過程.docx_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

oracle pl/sql 編程 存儲(chǔ)過程pl/sql 的介紹 pl/sql 是什么 pl/sql(procedural language/sql)是 oracle 在標(biāo)準(zhǔn)的sql 語言上的擴(kuò)展。 pl/sql 不僅允許嵌入 sql 語言,還可以定義變量和常量,允許使用條件語句和 循環(huán)語句,允許使用例外處理各種錯(cuò)誤,這樣使得它的功能變得更加大。 為什么學(xué) pl/sql 學(xué)習(xí)必要性 1.提高應(yīng)用程序的運(yùn)行性能 2.模塊化的設(shè)計(jì)思想 【分頁的過程,訂單的過程,轉(zhuǎn)賬的過程。】 3.減少網(wǎng)絡(luò)傳輸量 4.提高安全性 (sql 會(huì)包括表名,有時(shí)還可能有密碼,傳輸?shù)臅r(shí)候會(huì)泄露。PL/SQL 就不會(huì)) 為什么 PL/SQL 會(huì)快呢?不好的地方: 移植性不好 (換數(shù)據(jù)庫就用不了), 用什么編寫 pl/sql sqlplus 開發(fā)工具 sqlplus 是 oracle公司提供的一個(gè)工具,這個(gè)因?yàn)槲覀冊(cè)谝郧敖榻B過的: 舉一個(gè)簡單的案例: 編寫一個(gè)存儲(chǔ)過程,該過程可以向某表中添加記錄。 1.創(chuàng)建一個(gè)簡單的表 Sql 代碼 1. create table mytest(name varchar2(30),passwd varchar2(30); - Page 66- 2.創(chuàng)建過程 Sql 代碼 1. create or replace procedure sp_pro1 is 2. begin-執(zhí)行部分 3. insert into mytest values(韓順平,m1234); 4. end; 5. / replace:表示如果 有sp_pro1,就替換 如何查看錯(cuò)誤信息:show error; 如何調(diào)用該過程: 1)exec 過程名 (參數(shù)值 1,參數(shù)值 2.); 2)call 過程名 (參數(shù)值 1,參數(shù)值 2.); pl/sql developer開發(fā)工具 pl/sql developer 是用于開發(fā) pl/sql 塊的集成開發(fā)環(huán)境(ide),它是一個(gè)獨(dú)立 的產(chǎn)品,而不是oracle 的一個(gè)附帶品。 舉一個(gè)簡單案例: 編寫一個(gè)存儲(chǔ)過程,該過程可以刪除某表記錄。 Sql 代碼 1. create or replace procedure sp_pro2 is 2. begin-執(zhí)行部分 3. delete from mytest where name=韓順平; 4. end; pl/sql 基礎(chǔ) pl/sql 介紹 介紹 開發(fā)人員使用pl/sql 編寫應(yīng)用模塊時(shí),不僅需要掌握 sql 語句的編寫方法, 還要掌握 pl/sql 語句及語法規(guī)則。pl/sql 編程可以使用變量和邏輯控制語句, 從而可以編寫非常有用的功能模塊。比如:分頁存儲(chǔ)過程模塊、訂單處理存儲(chǔ)過 程模塊、轉(zhuǎn)賬存儲(chǔ)過程模塊。而且如果使用pl/sql 編程,我們可以輕松地完成 非常復(fù)雜的查詢要求。 pl/sql 可以做什么 簡單分類 |過程 (存儲(chǔ)過程) | |函數(shù) - Page 67-塊 (編程) | |觸發(fā)器 | |包 編寫規(guī)范 編寫規(guī)范 1.注釋 單行注釋 - Sql 代碼 1. select * from emp where empno=7788; -取得員工信息 多行注釋 /*.*/來劃分 2.標(biāo)志符號(hào)的命名規(guī)范 1).當(dāng)定義變量時(shí),建議用 v_作為前綴 v_sal 2).當(dāng)定義常量時(shí),建議用 c_作為前綴 c_rate 3).當(dāng)定義游標(biāo)時(shí),建議用_cursor 作為后綴 emp_cursor 4).當(dāng)定義例外時(shí),建議用 e_作為前綴 e_error pl/sql 塊介紹 介紹 塊 (block)是 pl/sql 的基本程序單元,編寫 pl/sql 程序?qū)嶋H上就是編寫 pl/sql 塊,要完成相對(duì)簡單的應(yīng)用功能,可能只需要編寫一個(gè)pl/sql 塊,但是 如果想要實(shí)現(xiàn)復(fù)雜的功能,可能需要在一個(gè)pl/sql 塊中嵌套其它的 pl/sql塊。 pl/sql 塊 由三個(gè)部分構(gòu)成:定義部分,執(zhí)行部分,例外處理部分。 如下所示: declare /*定義部分定義常量、變量、游標(biāo)、例外、復(fù)雜數(shù)據(jù)類型*/ begin /*執(zhí)行部分要執(zhí)行的pl/sql 語句和 sql 語句*/ exception /*例外處理部分處理運(yùn)行的各種錯(cuò)誤*/ end; 定義部分是從 declare 開始的,該部分是可選的; 執(zhí)行部分是從 begin 開始的,該部分是必須的; 例外處理部分是從 exception 開始的,該部分是可選的。 可以和 java 編程結(jié)構(gòu)做一個(gè)簡單的比較。 pl/sql 塊的實(shí)例(1) 實(shí)例 1-只包括執(zhí)行部分的pl/sql 塊 - Page 68-Sql 代碼 1. set serveroutput on -打開輸出選項(xiàng) 2. begin 3. dbms_output.put_line(hello); 4. end; 相關(guān)說明: dbms_output 是 oracle所提供的包 (類似 java 的開發(fā)包),該包包含一些過程, put_line 就是 dbms_output包的一個(gè)過程。 pl/sql 塊的實(shí)例(2) 實(shí)例 2-包含定義部分和執(zhí)行部分的pl/sql 塊 Sql 代碼 1. declare 2. v_ename varchar2(5); -定義字符串變量 3. begin 4. select ename into v_ename from emp where empno=&aa; 5. dbms_output.put_line(雇員名:|v_ename); 6. end; 7. / 如果要把薪 也顯示出來,那么執(zhí)行部分就應(yīng)該這么寫: Sql 代碼 1. select ename,sal into v_ename,v_sal from emp where empno=&aa; 相關(guān)說明: & 表示要接收從控制臺(tái)輸入的變量 pl/sql 塊的實(shí)例(3) 實(shí)例 3-包含定義部分,執(zhí)行部分和例外處理部分 為了避免 pl/sql 程序的運(yùn)行錯(cuò)誤,提高pl/sql 的健壯性,應(yīng)該對(duì)可能的錯(cuò)誤 進(jìn)行處理,這個(gè)很有必要。 1.比如在實(shí)例 2 中,如果輸入了不存在的雇員號(hào),應(yīng)當(dāng)做例外處理。 2.有時(shí)出現(xiàn)異常,希望用另外的邏輯處理,網(wǎng)示 我們看看如何完成 1 的要求。 相關(guān)說明: oracle事先預(yù)定義了一些例外,no_data_found 就是找不到數(shù)據(jù)的例外。 Sql 代碼 - Page 69-1. declare 2. -定義變量 3. v_ename varchar2(5); 4. v_sal number(7,2); 5. begin 6. -執(zhí)行部分 7. select ename,sal into v_ename,v_sal from emp where empno=&a a; 8. -在控制臺(tái)顯示用戶名 9. dbms_output.put_line(用戶名是:|v_ename| 工資:|v_sal); 10. -異常處理 11.exception 12.when no_data_found then 13. dbms_output.put_line(朋友,你的編號(hào)輸入 誤 !); 14.end; 15./ - Page 70-17.pl/sql 分類分類 - 過程過程,函數(shù),函數(shù),包,包,觸發(fā)器觸發(fā)器 分類分類 過程過程,函數(shù)函數(shù),包包,觸發(fā)器觸發(fā)器 過程 過程用于執(zhí)行特定的操作,當(dāng)建立過程時(shí),既可以指定輸入?yún)?shù)(in),也可以指 定輸出參數(shù)(out), 通過在過程中使用輸入?yún)?shù),可以將數(shù)據(jù)傳遞到執(zhí)行部分; 通過使用輸出參數(shù),可以將執(zhí)行部分的數(shù)據(jù)傳遞到應(yīng)用環(huán)境。在 sqlplus 中可以 使用 create procedure 命令來建立過程。 實(shí)例如下: 1.請(qǐng)考慮編寫一個(gè)過程,可以輸入雇員名,新工資,可修改雇員的工資 2.如何調(diào)用過程有兩種方法; exec call 3.如何在 java程序中調(diào)用一個(gè)存儲(chǔ)過程 問題:如何使用過程返回值? 特別說明: 對(duì)于過程我們會(huì)在以后給大家詳細(xì)具體的介紹,現(xiàn)在請(qǐng)大家先有一個(gè)概念。 create procedure sp_pro3(spName

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論