存儲過程基本語法

1.基本結構 sql

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 判斷code

IF V_TEST=1 THEN
   BEGIN 
      do something
   END;
END IF;

4.while 循環orm

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

5.變量賦值io

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.異常中的錯誤代碼和錯誤消息select

      Oracle內置函數SQLCODE和SQLERRM是特別用在OTHERS處理器中,分別用來返回Oracle的錯誤代碼和錯誤消息。
   OTHERS處理器應該是異常處理塊中的最後的異常處理器,由於它是用來捕獲除了別的異常處理器處理之外的全部的Oracle異常,因此在程序的最外層使用一個OTHERS處理器的話,將能夠確保全部的錯誤都會被檢測到。
    在一個內在的異常中,SQLCODE返回Oracle錯誤的序號,而SQLERRM返回的是相應的錯誤消息,錯誤消息首先顯示的是錯誤代碼。SQLCODE返回的是負數,除非Oracle的錯誤爲「ORA-01403:NO DATA FOUND」(譯:ORA-01403:未找到數據),當Oracle錯誤爲「ORA-01403:NO DATA FOUND」時,其對應的SQLCODE爲+100。對於用戶自定義的異常,SQLCODE返回的是+1,而SQLERRM返回的是User-Defined Exception。
    一個Oracle的錯誤消息最多隻能包含512個字節的錯誤代碼。若是沒有異常被觸發,則SQLCODE返回0,SQLERRM返回「ORA-0000:normal, successful completion」。循環

...

    EXCEPTION
      WHEN OTHERS THEN
          ROLLBACK;
          c_sqlcode := SQLCODE;
          c_sqlerrm := SUBSTRB(SQLERRM, 1, 512);
          o_sts        := ‘-1’;
          c_error      := c_process_sts_error;
END PROC_SEND_RECEIVE_ERR_INS;
相關文章
相關標籤/搜索