发现一个错误后停止验证

时间:2014-02-15 17:02:46

标签: oracle validation sqlplus

我想查找输入的每个客户的所有错误,但在找到一个错误后验证停止。如何让它贯穿每次验证?我希望在ERROR_AUDIT表中输入相同的数据两次,因此第二个客户有两个错误,一个重复的客户编号和无效的zip。     

              100001         雷研究生         834 Meadowlink         路易斯维尔         TX         77777      
              100001         杰伊拉德         834链接         路易斯维尔         TX         777      

-- check for duplicate cust_number
SELECT COUNT(*) 
 INTO v_count
  FROM cust_entry
  WHERE cust_number = t_tab(cur_cust).CUST_NUMBER;

--if current record exists, insert into the error_audit table
IF v_count > 0 THEN
  INSERT INTO error_audit 
    VALUES('XML101', USER, SYSDATE, input_file, t_tab(cur_cust).CUST_NUMBER, 
    'Customer number already exists.');
  V_VALID := 'N';
END IF; 

IF LENGTH(t_tab(cur_cust).CUST_ZIP) < 4 THEN
  INSERT INTO error_audit 
    VALUES('XML102', USER, SYSDATE, input_file, t_tab(cur_cust).CUST_NUMBER, 
    'Customer zipcode less than 4 digits.');
  V_VALID := 'N';
END IF;

IF V_VALID = 'Y' THEN
   INSERT INTO cust_entry
     VALUES(t_tab(cur_cust).CUST_NUMBER, t_tab(cur_cust).CUST_NAME,
       t_tab(cur_cust).CUST_ADDR, t_tab(cur_cust).CUST_CITY, 
       t_tab(cur_cust).CUST_STATE, t_tab(cur_cust).CUST_ZIP, 
       t_tab(cur_cust).CUST_PHONE, t_tab(cur_cust).CUST_BALANCE, 
       t_tab(cur_cust).CUST_CREDIT_LIMIT);
 END IF;

V_VALID := 'Y'; -- This reinitializes the valid record switch.

0 个答案:

没有答案