2

SQL Plusでスクリプトを実行していますが、スクリプトにforループがあります。

BEGIN
  FOR count IN 1..100 LOOP
    INSERT INTO CompanyShare VALUES (count, 1, 250);
  END LOOP;
END;

BEGIN
  FOR count IN 101..200 LOOP
    INSERT INTO CompanyShare VALUES (count, 2, 50);
  END LOOP;
END;

スクリプトを実行すると、次のエラーが発生しました。

ORA-06550:6行目、1列目:PLS-00103:記号「BEGIN」が検出されました

どこが間違っているのですか?

4

3 に答える 3

4

/以下のように後に追加してみてくださいend;

BEGIN
  FOR count IN 1..100 LOOP
    INSERT INTO CompanyShare VALUES (count, 1, 250);
  END LOOP;
END;
/ --<-- Here
BEGIN
  FOR count IN 101..200 LOOP
    INSERT INTO CompanyShare VALUES (count, 2, 50);
  END LOOP;
END;
于 2012-11-26T13:07:00.340 に答える
3

ロジックを見ると、条件に基づいてスクリプトを単純化することもできます。

  BEGIN
  FOR count IN 1..200
   LOOP
    INSERT INTO CompanyShare VALUES (count
                                    ,CASE WHEN count<=100 THEN 1   ELSE 2  END
                                    ,CASE WHEN count<=100 THEN 250 ELSE 50 END
                                    );
   END LOOP;
  END;
  /
于 2012-11-26T13:41:12.667 に答える
0

終了後にセミコロンがありません。これを試してください

BEGIN
  FOR count IN 1..100 LOOP
   INSERT INTO CompanyShare VALUES (count, 1, 250);
  END LOOP;
END ;   --****
BEGIN
 FOR count IN 101..200 LOOP
  INSERT INTO CompanyShare VALUES (count, 2, 50);
 END LOOP;
END;
于 2012-11-26T12:55:42.167 に答える