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;