oracle procedure存儲過程


 

1、基本結構

CREATE OR REPLACE PROCEDURE 存儲過程名字
(
    參數1    IN NUMBER,
    參數2    IN NUMBER       
) IS/AS

變量1    INTEGER :=0;
變量2    DATE;

BEGIN
.
.
.
END 存儲過程名字

 

2、SELECT INTO STATEMENT

  將select查詢的結果存入到變量中,可以同時將多個列(字段)存儲到多個變量中,必須有一條記錄,否則拋出異常(如果沒有記錄,拋出NO_DATA_FOUND)

例子:

BEGIN 
    SELECT col1,col2 into 變量1,變量2 FROM typestruct where xxx; 
    EXCEPTION 
        WHEN NO_DATA_FOUND THEN 
     ROLLBACK;
     RAISE; 
END; 

 

3、IF判斷

IF    條件1    THEN 
    Do Someting
    ELSIF    條件2    THEN
        Do Someting
    ELSIF    條件3    THEN
        Do Someting
    ELSE
        Do Someting

END IF; 

 

4、while循環

WHILE V_TEST=1 LOOP 
    BEGIN 
        XXXX 
    END; 
END LOOP; 

5、變量賦值

V_TEST := 123; 

6、用for    in使用cursor(游標)

... 
    IS 
        CURSOR cur IS SELECT * FROM xxx; 
    BEGIN 
        FOR cur_result in cur LOOP 
            BEGIN 
            V_SUM :=cur_result.列名1+cur_result.列名2 
            END; 
        END LOOP; 
    END; 

7、用pl/sql developer debug

  連接數據庫后建立一個Test Window

  在窗口輸入調用SP的代碼,F9開始Debug,CTRL+N單步調試

 

注意事項:

1)存儲過程參數不帶取值范圍,in表示傳入,out表示輸出;

2)變量可帶取值范圍,后面接分號;

3)在判斷語句前最好先用count(*)函數判斷是否存在該條操作記錄

4)用select...into...給變量賦值

5)在代碼中拋出異常用RAISE;通常的用法:

EXCEPTION
    WHEN OTHERS THEN
        ROLLBACK;
        RAISE;
/*
異常分很多類,如NO_DATA_FOUND。OTHERS處本應該寫異常名稱,如果不想把異常分得那么細,可以籠統一點用OTHERS來捕獲,即所有異常均用OTHERS來捕獲。
WHEN OTHERS THEN 表示是其它異常。
RAISE表示拋出異常,讓User可以看到。
*/

6)AS/IS的區別

  在試圖(VIEW)中只能用AS不能用IS

  在游標(CURSOR)中只能用IS不能用AS

7)輸出變量賦值有兩種,一種是直接:=,還有一種就是SELECT INTO

8)顯示調試信息

  a.存儲過程中在必要的位置添加

DBMS_OUTPUT.put_line('HI');

  b.打開DBMS_OUTPUT

show serveroutput;
set serveroutput on;

9)刪除PROCEDURE

DROP PROCEDURE procedure_name;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM