Gewusst wie: einfügen in eine Tabelle korrekt mit Hilfe der Tabelle von Datensätzen und füralle, die in pl/sql

Ich Datensätze eingefügt werden sollen MY_TABLE mit forall. Aber die keine. von Datensätzen dat eingefügt wird, hält über die änderung mit jedem test laufen! Ich denke es hat etwas zu tun mit Schleife-Zähler, aber ich bin nicht in der Lage, um herauszufinden. Hier der code-snippet.

DECLARE
  TYPE l_rec_type IS RECORD (
        datakey SOURCE_TABLE.datakey%TYPE,
        sourcekey SOURCE_TABLE.sourcekey%TYPE,
        DESCRIPTION SOURCE_TABLE.DESCRIPTION%TYPE,
        dimension_name SOURCE_TABLE.dimension_name%TYPE ,
        data_type   SOURCE_TABLE.data_type%TYPE

   );


  TYPE l_table_type IS TABLE OF l_rec_typeINDEX BY PLS_INTEGER;
  l_table l_table_type;
  l_cntr NUMBER;
BEGIN
  FOR rec_dimname IN (SELECT dimension_name FROM dimension_table) LOOP
    l_cntr1 := 1
    FOR rec_source IN (SELECT * FROM source_table WHERE data_type IS NOT NULL) LOOP
      l_table(l_ctr1).datakey := rec_source.datakey;
      l_table(l_ctr1).sourcekey := rec_source.sourcekey;
      l_table(l_ctr1).DESCRIPTION := rec_source.DESCRIPTION;
      l_table(l_ctr1).dimension_name := rec_source.dimension_name;
      l_table(l_ctr1).data_type := rec_source.data_type;
      l_cntr1 := l_cntr1+1;
    END LOOP
    FORALL j IN l_table.FIRST..l_table.LAST
      INSERT INTO my_table VALUES(l_table(j).datakey,
                                  l_table(j).sourcekey,
                                  l_table(j).DESCRIPTION,
                                  l_table(j).dimension_name,
                                  l_table(j).data_type,
                                  1,
                                  SYSDATE,
                                  login_id                            
                                 );

  END LOOP;
END;

Was mache ich falsch? Normal insert mit for-Schleife einfügen 5000 Datensätze. Ein weiteres problem, das ich bin vor ist, wie Sie zu behandeln, WENN DUP_VAL_ON_INDEX und WENN ANDERE Ausnahme durch Verwendung von forall. In nornal for-Schleife einfach. Aber ich FORALL, die für schnelle Einsätze. Bitte um Hilfe!!

InformationsquelleAutor Arcs | 2012-03-05
Schreibe einen Kommentar