INSERTION à l'aide de la BOUCLE avec une sélection de

Je suis en train d'insérer les données d'une autre table à l'aide INSERT/SELECT combo. J'ai aussi besoin d'insérer accroissement du calcul spécifique. Cependant, je ne peux pas comprendre pourquoi il ne fonctionne pas.

J'ai la table (temp_business_area) comme ceci:

 ----------
 | bname  |
 ----------
 | London |
 | Sydney |
 | Kiev   |
 ----------

Je voudrais avoir cette enum table:

 -----------------------------------------------------------------
 | identifier    | language_id |   code | data   | company_limit |
 ----------------------------------------------------------------|
 | BUSINESS_UNIT |    0        |   100  | London | 126           |
 | BUSINESS_UNIT |    0        |   200  | Sydney | 126           |
 | BUSINESS_UNIT |    0        |   300  | Kiev   | 126           |
 -----------------------------------------------------------------

Mais ce que je reçois est: est-ce

-----------------------------------------------------------------
 | identifier    | language_id |   code | data   | company_limit |
 ----------------------------------------------------------------|
 | BUSINESS_UNIT |    0        |   100  | London | 126           |
 | BUSINESS_UNIT |    0        |   100  | Sydney | 126           |
 | BUSINESS_UNIT |    0        |   100  | Kiev   | 126           |
 | BUSINESS_UNIT |    0        |   200  | London | 126           |
 | BUSINESS_UNIT |    0        |   200  | Sydney | 126           |
 | BUSINESS_UNIT |    0        |   200  | Kiev   | 126           |
 | BUSINESS_UNIT |    0        |   300  | London | 126           |
 | BUSINESS_UNIT |    0        |   300  | Sydney | 126           |
 | BUSINESS_UNIT |    0        |   300  | Kiev   | 126           |
 -----------------------------------------------------------------

Et voici ma boucle.

BEGIN 
    FOR x IN 1 .. 3 LOOP
         INSERT INTO enum (identifier, language_id, code, data, company_limit)
         SELECT 'BUSINESS_UNIT', 0, x*100, bname, 126 FROM temp_business_area;
    END LOOP;
END;

Je ne peux pas comprendre où ai-je fait une erreur. De l'aide?

Vous avez une boucle avec trois itérations et pour chaque itération de sélectionner toutes les lignes d'une table avec trois lignes. Cela fait 9 lignes au total (3 x 3).
Je sais que dans MySQL, vous pouvez utiliser limit 20,10 pour obtenir la ligne spécifique n'est pas sûr oracle donc à la recherche comment mettre en œuvre limit dans oracle pourrait être une allusion SELECT 'BUSINESS_UNIT', 0, x*100, bname, 126 FROM temp_business_area limit x, 1

OriginalL'auteur Jaanna | 2012-12-18