標籤:stat llb into 異常 output 注意 視窗 code 函數
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 SometingEND 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;
oracle procedure預存程序