1. 程式人生 > >Oracle 函數 “判斷數據表中不存在的數據,才允許通過”

Oracle 函數 “判斷數據表中不存在的數據,才允許通過”

eight ret har replace 通過 color logs 信息 count()

 1 create or replace function mca_detail_material_val(p_material_code VARCHAR2,  --實參
 2                                                    p_material_name VARCHAR2,
 3                                                    p_mca_no VARCHAR2
 4                                                   ) 
 5        RETURN
varchar2 AS 6 7 --物料編碼/名稱的驗證,數據表(MATERIAL)中 不存在 該物料編碼/名稱,允許通過,填其他值都不允許通過 8 9 v_count1 NUMBER; -- 形參 10 v_count2 NUMBER; 11 v_count3 NUMBER; 12 v_count4 NUMBER; 13 14 CURSOR get_wl_material_code1 IS 15 SELECT count(m.material_code) --
count()函數:查詢出來的記錄條數(記錄數) 16 FROM MATERIAL m 17 WHERE m.material_code = p_material_code; 18 19 CURSOR get_wl_material_code2 IS 20 SELECT count(material_code) 21 FROM mca_detail m 22 WHERE m.material_code =
p_material_code AND m.mca_no <> p_mca_no; 23 -- m.mca_no <> p_mca_no:在編輯時,排除此單號(不做比較)---物料編碼 24 CURSOR get_wl_material_name1 IS 25 SELECT count(m.material_name) 26 FROM MATERIAL m 27 WHERE m.material_name = p_material_name; 28 29 CURSOR get_wl_material_name2 IS 30 SELECT count(m.material_name) 31 FROM mca_detail m 32 WHERE m.material_name = p_material_name AND m.mca_no <> p_mca_no; 33 BEGIN -- m.mca_no <> p_mca_no:在編輯時,排除此單號(不做比較)---物料名稱 34 OPEN get_wl_material_code1; 35 FETCH get_wl_material_code1 INTO v_count1; 36 CLOSE get_wl_material_code1; 37 38 OPEN get_wl_material_code2; 39 FETCH get_wl_material_code2 INTO v_count3; 40 CLOSE get_wl_material_code2; 41 42 OPEN get_wl_material_name1; 43 FETCH get_wl_material_name1 INTO v_count2; 44 CLOSE get_wl_material_name1; 45 46 OPEN get_wl_material_name2; 47 FETCH get_wl_material_name2 INTO v_count4; 48 CLOSE get_wl_material_name2; 49 50 IF v_count1+v_count3 <> 0 THEN 51 RETURN 4823272; -- 錯誤信息碼(信息碼表),物料編碼已存在,不允許出現相同值! 52 ELSIF v_count2+v_count4 <> 0 THEN 53 RETURN 4823273; -- 錯誤信息碼(信息碼表),物料名稱已存在,不允許出現相同值! 54 END IF; 55 56 RETURN 0; 57 58 end mca_detail_material_val;

Oracle 函數 “判斷數據表中不存在的數據,才允許通過”