存儲(chǔ)過程基礎(chǔ)培訓(xùn)_第1頁
存儲(chǔ)過程基礎(chǔ)培訓(xùn)_第2頁
存儲(chǔ)過程基礎(chǔ)培訓(xùn)_第3頁
存儲(chǔ)過程基礎(chǔ)培訓(xùn)_第4頁
存儲(chǔ)過程基礎(chǔ)培訓(xùn)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、存儲(chǔ)過程基礎(chǔ)培訓(xùn),2007年4月,Daya computer systems(成都)limited,簡介,什么是存儲(chǔ)過程?要用SQL語句預(yù)先編寫常用或復(fù)雜的任務(wù),以指定的名稱保存這些任務(wù),然后提供與數(shù)據(jù)庫中定義的存儲(chǔ)過程相同的服務(wù),只需調(diào)用execute即可自動(dòng)完成命令。存儲(chǔ)過程的優(yōu)點(diǎn):1 .快速執(zhí)行速度:存儲(chǔ)過程僅在創(chuàng)建時(shí)編譯,以后不必在每次運(yùn)行存儲(chǔ)過程時(shí)重新編譯,一般SQL語句將在每次運(yùn)行時(shí)編譯。2.對多個(gè)表執(zhí)行復(fù)雜的操作(如Update、Insert、Query和Delete)時(shí),可以將此復(fù)雜操作與數(shù)據(jù)庫提供的事務(wù)處理一起封裝到存儲(chǔ)過程中。3。存儲(chǔ)過程可以重用,從而減少數(shù)據(jù)庫開發(fā)人員的工

2、作量。4 .您可以設(shè)置具有高度安全性的用戶,使其只能擁有指定存儲(chǔ)過程的許可證。1.系統(tǒng)存儲(chǔ)過程:以sp_開始,以便進(jìn)行系統(tǒng)的各種設(shè)置。獲取信息。相關(guān)管理任務(wù)(例如,sp_help獲取有關(guān)分配目標(biāo)的信息2)。擴(kuò)展存儲(chǔ)過程以XP_開頭,然后是操作系統(tǒng)提供的功能,例如exec master.XP _ cmdshell ping 3)。這是存儲(chǔ)過程、Sqlplus和Sqlplus用戶名/密碼。查看select * from tab表時(shí):可以編輯ed關(guān)聯(lián)字符串| | 查看表的結(jié)構(gòu)desc表名在sql中,字符串單引號(hào)默認(rèn)構(gòu)建可以包含多個(gè)字段,外鍵不能為空。必須在另一個(gè)表格中??梢酝ㄟ^添

3、加文件名在sqlplus中執(zhí)行plsql語句。使用% %type可以在保存期間將變量定義為與表類型、創(chuàng)建和執(zhí)行相同的變量。創(chuàng)建腳本CREATE PROCEDURE存儲(chǔ)過程名AS select userid from users order by userid desc執(zhí)行腳本execute procedure存儲(chǔ)過程名(參數(shù)1,參數(shù)2)、CREATE、CREATE PROCEDURE-初始化參數(shù)變量1 INTEGER :=0;變量2 DATEBEGIN END示例: create procedure Sam . credit(ACC _ no in number,amount in numbe

4、r)as egin update accounts set balance=END附注:注釋為:-,說明,V _ TEST :=123可以使用Create or replace procedure語句,該語句的用途是保留以前授予的所有excute權(quán)限。IN、OUT和IN OUT用于修改參數(shù)。IN :表示調(diào)用方指定值,然后接收并處理。OUT:表示PRCEDURE通過此變量將值返回給調(diào)用方。IN OUT:是兩種組合。變量賦值:例如V _ TEST :=123,變量SELECT INTO STATEMENT,在變量中存儲(chǔ)SELECT查詢結(jié)果,可以同時(shí)存儲(chǔ)多個(gè)列,必須有一條記錄,否則引發(fā)異常錯(cuò)誤(未出

5、現(xiàn)NO_DATA_FOUND時(shí))。示例:BEGIN SELECT col1exception when no _ data _ found then xxxx;END.示例,create or replace procedure get _ news as aa number;begin select count(*)into aa from cf _ news;DBMS _ output . put _ line(aa=| | aa);End、IF、IF條件THEN BEGIN do something ENDEND IF,null語句,if(true)then null;End if、wh

6、ile、WHILE條件LOOP BEGIN do something ENDEND LOOP使用、cursor、for in使用cursor.is cur is select * from XXXbegin for cur _ result in cur loop opencur _ result;-光標(biāo)v _ sum :=cur _ result。列名1cur _ result。列名2 ENDEND LOOPClose cur _ result;-封閉光標(biāo)端點(diǎn);具有參數(shù)的cursor,具有參數(shù)的cursor c _ user(c _ id number)is select name from

7、 user where typeid=c _ id;OPEN C_USER(變量值);LOOP FETCH C _ USER INTO V _ NAMEEXIT FETCH C _ USER % NOTFOUNDDo something END LOOPCLOSE C _ USER,返回值,存儲(chǔ)過程的三個(gè)返回值: 1。Return,整數(shù)2。以output格式返回參數(shù)3。Recordset差異: output和return在批處理程序中作為變量接收,recordset被傳遞回正在運(yùn)行批處理的客戶端進(jìn)行調(diào)試。1、在sqlplus上運(yùn)行“set serveroutput on”命令2時(shí),在保存過程中

8、執(zhí)行DBMS_OUTPUT。PUT_LINE(VarName)可用。您可以使用第三方工具(如Pl/Sql Developer,如create or replace procedure test is EMP _ name varchar 2(10)打印3。cursor C1 is select ename from EMP where dept no=20;BEGIN OPEN C1LOOP FETCH C1 INTO Emp _ nameEXIT WHEN c1 % NOTFOUNDDBMS_OUTPUT。PUT _ LINE(Emp _ name);END LOOP結(jié)束測試;練習(xí)、1、表1

9、:無數(shù)據(jù)的比率表格式字段如下所示:IdInt(觸發(fā)器,設(shè)置自動(dòng)增加)字冠char(20)(關(guān)鍵字)默認(rèn)貨幣時(shí)間Int默認(rèn)費(fèi)用int貨幣間隔int貨幣費(fèi)用int觸發(fā)器名稱:trig_id表2: source _ fee(與sysfee相同1、如果過程參數(shù)要求輸入目標(biāo)表名2、目標(biāo)表名,則會(huì)在保存過程中自動(dòng)創(chuàng)建sysfee格式的目標(biāo)表,并將source_fee中的數(shù)據(jù)自動(dòng)導(dǎo)入到目標(biāo)表中。sequence,1,自動(dòng)累計(jì)功能create sequence AAAA minvalue 1 max value 999999999999999999999999 start with 1 increment by 1 nocache;trigger,2,trigger實(shí)施-存儲(chǔ)過程create or replace trigger trg _ insert before insert on table for each row declare begin if inserting templateEnd ifEnd trg _ insert,參考答案,create or replace procedure AAA(v _ tname

溫馨提示

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

最新文檔

評論

0/150

提交評論