marvinamorim

Untitled

Feb 23rd, 2021
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 0.81 KB | None | 0 0
  1. DECLARE
  2. v_statement VARCHAR2(4000);
  3. v_cols VARCHAR2(4000);
  4. v_values VARCHAR2(4000);
  5. BEGIN
  6. FOR c1 IN (
  7. SELECT DISTINCT pk1 FROM TB_FDM_HISTORY
  8.  WHERE table_name = 'TB_FDM_ESTOQUE'
  9.    AND action = 'D'
  10.  ORDER BY 1
  11. ) LOOP
  12.   FOR c2 IN (
  13.     SELECT * FROM TB_FDM_HISTORY
  14.      WHERE table_name = 'TB_FDM_ESTOQUE'
  15.        AND action = 'D'
  16.        AND pk1 = c1.pk1
  17.      ORDER BY 1
  18.   ) LOOP
  19.     v_cols := v_cols || c2.column_name || ',';
  20.     v_values := v_values || NVL(TO_CHAR(c2.old_number), ''''||c2.old_vc||'''') || ',';
  21.   END LOOP;
  22.   v_cols := SUBSTR(v_cols, 1, LENGTH(v_cols)-1);
  23.   v_values := SUBSTR(v_values, 1, LENGTH(v_values)-1);
  24.   v_statement := 'insert into TB_FDM_ESTOQUE_TEMP ('||v_cols||') values ('||v_values||')';
  25.   EXECUTE IMMEDIATE v_statement;
  26.   v_cols := '';
  27.   v_values := '';
  28. END LOOP;
  29. END;
Advertisement
Add Comment
Please, Sign In to add comment