sql and exception

DECLARE
  vinput  VARCHAR2(200);
  voutput VARCHAR2(4000);
BEGIN
  vinput := '1111073124253975';
  FOR x IN (WITH tab1 AS
               (SELECT vinput str FROM dual)
              SELECT regexp_substr(str || ',', '[^,]+', 1, LEVEL) AS c2
                FROM tab1 t
              CONNECT BY LEVEL <=
                         length(regexp_replace(str, '[^,]', NULL)) + 1) LOOP
    dbms_output.put_line('userid:' || x.c2);
    BEGIN
      --tf_f_user
      vtable := 'tf_f_user';
    
      SELECT 'insert into tf_f_user values ' || '(' || user_id || ',' ||
             dummy_tag || ',' || net_type_code || ',' || serial_number || ',' ||
             chr(10) || eparchy_code || ',' || city_code || ',' || cust_id || ',' ||
             usecust_id || ',' || brand_code || ',' || product_id || ',' ||
             chr(10) || user_type_code || ',' || prepay_tag || ',' ||
             service_state_code || ',' || open_mode || ',' || acct_tag || ',' ||
             remove_tag || ',' || to_char(in_date, 'yyyymmddhh24miss') || ',' ||
             chr(10) || to_char(open_date, 'yyyymmddhh24miss') || ',' ||
             to_char(pre_destroy_date, 'yyyymmddhh24miss') || ',' ||
             to_char(destroy_date, 'yyyymmddhh24miss') || ',' || chr(10) ||
             first_call_date || ',' ||
             to_char(last_stop_date, 'yyyymmddhh24miss') || ',' ||
             credit_class || ',' || base_credit_value || ',' ||
             credit_value || ',' || chr(10) || credit_control_id || ',' ||
             changeuser_date || ',' || score_value || ',' ||
             to_char(update_time, 'yyyymmddhh24miss') || ');'
        INTO voutput
        FROM ucr_act1.tf_f_user t
       WHERE t.user_id = x.c2
         AND t.remove_tag = ('0');
      dbms_output.put_line(voutput);
    EXCEPTION
      WHEN no_data_found THEN
        dbms_output.put_line('no ' || vtable || '!');
    END;
    BEGIN
      --tf_f_feepolicy
      vtable := 'tf_f_feepolicy';
    
      SELECT 'insert into tf_f_feepolicy values ' || '(' ||
             feepolicy_ins_id || ',' || id_type || ',' || id || ',' ||
             feepolicy_id || ',' || spec_tag || ',' || rela_user_id || ',' ||
             product_id || ',' || serv_bund_id || ',' || nvl(serv_id, 0) || ',' ||
             nvl(feepolicy_bund_id, 0) || ',' ||
             to_char(start_date, 'yyyymmddhh24miss') || ',' ||
             to_char(end_date, 'yyyymmddhh24miss') || ');'
        INTO voutput
        FROM ucr_act1.tf_f_feepolicy t
       WHERE t.id = x.c2
         AND t.start_date <= SYSDATE
         AND t.end_date >= SYSDATE;
      dbms_output.put_line(voutput);
    EXCEPTION
      WHEN no_data_found THEN
        dbms_output.put_line('no ' || vtable || '!');
    END;
    BEGIN
      --tf_f_user_importinfo
      vtable := 'tf_f_user_importinfo';
      SELECT 'insert into tf_f_user_importinfo values ' || '(' || user_id || ',' ||
             net_type_code || ',' || product_id || ',' || brand_code || ',' ||
             logic_phone || ',' || phyical_phone || ',' ||
             to_char(start_date, 'yyyymmddhh24miss') || ',' ||
             to_char(end_date, 'yyyymmddhh24miss') || ');'
        INTO voutput
        FROM ucr_act1.tf_f_user_importinfo t
       WHERE t.user_id = x.c2
         AND t.start_date <= SYSDATE
         AND t.end_date >= SYSDATE;
      dbms_output.put_line(voutput);
    EXCEPTION
      WHEN no_data_found THEN
        dbms_output.put_line('no ' || vtable || '!');
    END;
    BEGIN
      --tf_f_user_member
      vtable := 'tf_f_user_member';
      SELECT 'insert into tf_f_user_member values ' || '(' || user_id || ',' ||
             member_role_code || ',' || member_role_type || ',' ||
             member_role_id || ',' || member_role_number || ',' ||
             discnt_priority || ',' ||
             to_char(start_date, 'yyyymmddhh24miss') || ',' ||
             to_char(end_date, 'yyyymmddhh24miss') || ');'
        INTO voutput
        FROM ucr_act1.tf_f_user_member t
       WHERE t.user_id = x.c2
         AND t.start_date <= SYSDATE
         AND t.end_date >= SYSDATE;
      dbms_output.put_line(voutput);
    
    EXCEPTION
      WHEN no_data_found THEN
        dbms_output.put_line('no ' || vtable || '!');
    END;  
  END LOOP;
END;
--
--SELECT * FROM ucr_act1.tf_f_user_importinfo t WHERE t.user_id = ('1111073124253975');

猜你喜欢

转载自searchje.iteye.com/blog/1544006