oracle 存儲過程的基本語法

From:http://www.cnblogs.com/chinafine/articles/1776085.html

1.基本結構 
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
    參數1 IN NUMBER,
    參數2 IN NUMBER
) IS
變量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
      xxxx;
  END;
  ...

3.IF 判斷
  IF V_TEST=1 THEN
    BEGIN 
       do something
    END;
  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.帶參數的cursor
  CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
  OPEN C_USER(變量值);
  LOOP
 FETCH C_USER INTO V_NAME;
 EXIT FETCH C_USER%NOTFOUND;
    do something
  END LOOP;
  CLOSE C_USER;

8.用pl/sql developer debug
  連接數據庫後建立一個Test WINDOW
  在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試

 

簡單實例,通過DBMS_OUTPUT來看結果

CREATE OR REPLACE PROCEDURE bb (lic_para IN VARCHAR2,out_para OUT VARCHAR2)
AS
   temp   VARCHAR2 (100);
BEGIN
   SELECT lic_no
     INTO temp
     FROM t_vehicle_info
    WHERE lic_no = lic_para;
    out_para:=temp;
    DBMS_OUTPUT.put_line (out_para);
END bb;

下面是調用:

begin

  -- Call the procedure

  bb(lic_para => :lic_para,

     out_para => :out_para);

end;

    可以在命令行裏敲sqlplus “yonghuming/mima@dbname”接着調試存儲過程。但是最好用的是在pl/sql Developer工具裏面用點存儲過程裏的TEST來調用,它能自動生成調用的語句並有欄目讓你輸入參數值,包括輸入參數和輸出參數,並把結果返回到輸出參數裏面,在結果欄可見,這點pl/sql Developer比TOAD要強,TOAD在存儲過程上右鍵後點擊EXECUTE Procedure也可以執行,只是結果在那看我不曉得,而在pl/sql Developer按F9可以調試,ctrl+N可以單步跟蹤,的確爽。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章