標籤:
--IFELSE
DECLARE
V_NUM NUMBER;BEGIN V_NUM := 100; IF V_NUM > 100 THEN -- ELSIF V_NUM > 50 THEN -- ELSE -- END IF;END; --帶參數預存程序CREATE OR REPLACE PROCEDURE DELETE_SUBSCRIBER(P_SUBID IN NUMBER) IS V_MEM VARCHAR2(100) := ‘<SQL5.4.4.11R2.p14121911_6861>‘;BEGIN --。。。END DELETE_SUBSCRIBER;/ --不帶參數預存程序CREATE OR REPLACE PROCEDURE DELETE_SUBSCRIBER IS V_MEM VARCHAR2(100) := ‘<SQL5.4.4.11R2.p14121911_6861>‘;BEGIN --。。。END DELETE_SUBSCRIBER;/ --帶參數的函數其中RETURN字句是必須存在的,一個函數如果沒有執行RETURN字句就結束語句會發生錯誤CREATE OR REPLACE FUNCTION GET_PRODUCTSTR(P_SUBID IN NUMBER, P_PAYDT DATE) RETURN VARCHAR2 IS RESULT VARCHAR2(1024);BEGIN MERGE_STR := ‘‘; FOR V_P IN C_PRODUCTINFO LOOP MERGE_STR := MERGE_STR || V_P.PRODUCTNAMESTR || ‘[R:‘ || V_P.MONTHFEE || ‘]. ‘; END LOOP; RETURN RESULT;END;/ --函數可以有預設值CREATE OR REPLACE FUNCTION CountryNumber(n_max number default 10000,n_min number default 10)RETURN VARCHAR2 ISv_resultvalue vacharr2(50);BEGIN RETURN v_resultvalue;END; --異常處理例子DECLARE V_NUM NUMBER(2) := 10; V_ZERO NUMBER(2) := 0; V_RESULT NUMBER(5);BEGIN V_RESULT := V_NUM / V_ZERO;EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE(‘DIVIDE ZERO‘);END; 異常說明:DUP_VAL_INDEX:違反唯一性LOGIN_DENIED: 登陸失敗,使用者名稱密碼錯誤NO_DATA_FOUND:沒有探索資料存在TOO_MANY_ROWS:資料行太多,ZERO_DIVIDE:除數為0錯誤VALUE_ERROR: 演算法或轉換錯誤CASE_NOT_FOUND: 在case語句中發現不匹配的when語句 DECLARE E_OVERNUMBER EXCEPTION;BEGIN IF V_MAX < V_NUM THEN -- deal.... RAISE E_OVERNUMBER; END IF EXCEPTION WHEN E_OVERNUMBER THEN DBMS_OUTPUT.PUT_LINE("ERR MSG");END;
【ORACLE】常用指令碼