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

下載本文檔

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

文檔簡介

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

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

3、加文件名在sqlplus中執(zhí)行plsql語句。使用% %type可以在保存期間將變量定義為與表類型、創(chuàng)建和執(zhí)行相同的變量。創(chuàng)建腳本CREATE PROCEDURE存儲過程名AS select userid from users order by userid desc執(zhí)行腳本execute procedure存儲過程名(參數(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權限。IN、OUT和IN OUT用于修改參數(shù)。IN :表示調用方指定值,然后接收并處理。OUT:表示PRCEDURE通過此變量將值返回給調用方。IN OUT:是兩種組合。變量賦值:例如V _ TEST :=123,變量SELECT INTO STATEMENT,在變量中存儲SELECT查詢結果,可以同時存儲多個列,必須有一條記錄,否則引發(fā)異常錯誤(未出

5、現(xiàn)NO_DATA_FOUND時)。示例: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;-光標v _ sum :=cur _ result。列名1cur _ result。列名2 ENDEND LOOPClose cur _ result;-封閉光標端點;具有參數(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,返回值,存儲過程的三個返回值: 1。Return,整數(shù)2。以output格式返回參數(shù)3。Recordset差異: output和return在批處理程序中作為變量接收,recordset被傳遞回正在運行批處理的客戶端進行調試。1、在sqlplus上運行“set serveroutput on”命令2時,在保存過程中

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結束測試;練習、1、表1

9、:無數(shù)據的比率表格式字段如下所示:IdInt(觸發(fā)器,設置自動增加)字冠char(20)(關鍵字)默認貨幣時間Int默認費用int貨幣間隔int貨幣費用int觸發(fā)器名稱:trig_id表2: source _ fee(與sysfee相同1、如果過程參數(shù)要求輸入目標表名2、目標表名,則會在保存過程中自動創(chuàng)建sysfee格式的目標表,并將source_fee中的數(shù)據自動導入到目標表中。sequence,1,自動累計功能create sequence AAAA minvalue 1 max value 999999999999999999999999 start with 1 increment by 1 nocache;trigger,2,trigger實施-存儲過程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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論