LEGEN Sie mithilfe der SCHLEIFE mit SELECT

Ich versuche zum einfügen der Daten aus der anderen Tabelle über " EINFÜGEN/AUSWAHL-combo. Ich habe auch einstecken müssen-Inkrement mit spezifischen Berechnung. Allerdings kann ich nicht herausfinden, warum es nicht funktioniert.

Habe ich die Tabelle (temp_business_area) wie folgt:

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

Ich möchte diese in enum Tabelle:

 -----------------------------------------------------------------
 | 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           |
 -----------------------------------------------------------------

Aber was ich bekomme ist diese:

-----------------------------------------------------------------
 | 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           |
 -----------------------------------------------------------------

Und hier ist mein loop.

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;

Ich kann nicht herausfinden, wo bin ich, macht Fehler. Hilfe?

Sie haben eine Schleife mit drei Iterationen und in jeder iteration wählen Sie alle Zeilen aus einer Tabelle mit drei Zeilen. Das macht 9 Zeilen insgesamt (3 x 3).
Ich weiß, in MySQL können Sie limit 20,10 um die bestimmte Zeile nicht sicher, dass oracle so suchen, wie die Umsetzung limit in oracle könnte ein Hinweis SELECT 'BUSINESS_UNIT', 0, x*100, bname, 126 FROM temp_business_area limit x, 1

InformationsquelleAutor Jaanna | 2012-12-18

Schreibe einen Kommentar