Oracle INSERT INTO SELECT(...) DUP_VAL_ON_INDEX comportement des exceptions

J'ai une procédure stockée qui ressemble à ceci:

BEGIN
  INSERT INTO result_table
  (SELECT (...) FROM query_table);
EXCEPTION
  WHEN DUP_VAL_ON_INDEX THEN
    NULL;
END;

Je vais le faire dans une boucle qui passe plusieurs paramètres de l'instruction SELECT et, dans certains cas, certaines valeurs peuvent dupliquer c'est pourquoi je dois prendre le DUP_VAL_ON_INDEX exception.

Ma question est que si l'instruction SELECT retourne plusieurs lignes et seulement l'un d'eux existe déjà dans *result_table*, f l'est. ex.

1 'A'
2 'B'
3 'C'

Et de la première rangée (de 1 'A') serait déjà dans la table, les autres lignes qui n'existent pas (deuxième et troisième à partir de cas ci-dessus) être inséré? Ou aucun d'entre eux serait inséré à tous?

J'ai peur qu'aucun d'entre eux serait inséré (et mon cas de test partiellement confirme que)... Si oui, quelle option dois-je atteindre les objectifs souhaités de comportement? Est-il un bon moyen pour insérer les lignes qui ne viole pas la clé primaire à l'aide de la construction ci-dessus?

InformationsquelleAutor Ziouas | 2013-02-01