2017-11-16 5 views
1

1000行を生成するクエリを作成しようとしています.CCHOMEWORKという名前の2列のID整数(PK)と1000行のすべての値を含むStudentID varcharというテーブルがあります。 。Oracle SQLに1000行を作成するクエリ

私はこれを試してみましたが、私はこれは1000行が作成されますエラーを得続けると

SET @MyCounter = 1 

WHILE @MyCounter < 1000 

BEGIN 

INSERT INTO CCHOMEWORK 
    (ID) 
VALUES 
    @MyCounter) 

    set @MyCounter = @MyCounter + 1; 

END 
+2

あなたのコードでは、SQL Serverのコードのように見えます。 Oracleを使用していますか? –

+0

はい、amazonで接続されたoracle SQLを使用していますが、このコードはオンラインで検索されていますので、すべて間違っている可能性があります。 –

答えて

4

を動作しません:

INSERT INTO CCHOMEWORK (ID) 
SELECT LEVEL 
FROM DUAL 
CONNECT BY LEVEL <= 1000 

SELECT LEVEL 
FROM DUAL 
CONNECT BY LEVEL <= 1000 

をあなたがして、あなたの挿入に含めることができます

ただし、複数の順次IDを挿入する場合は、シーケンスを使用する方がよい場合があります。

その後
CREATE SEQUENCE CCHOMEWORK__ID__SEQ 
/

INSERT INTO CCHOMEWORK (ID) 
SELECT CC_HOMEWORK__ID__SEQ.NEXTVAL 
FROM DUAL 
CONNECT BY LEVEL <= 1000; 

または:

BEGIN 
    FOR i IN 1 .. 1000 LOOP 
    INSERT INTO CCHOMEWORK (ID) VALUES (CC_HOMEWORK__ID__SEQ.NEXTVAL); 
    END LOOP; 
END; 
/
+0

ありがとう、しかし、私はどのようにそれらの行をデュアルから使用し、それを私のテーブルにコピーできますか? –

+0

@ roberto.sannazzaro。 。 。 CTEまたは 'create table as'を使用してください。 –

+0

@ roberto.sannazzaro私はちょうどその答えを更新していました...今完了しました。 – MT0

0

構文(PL/SQLを使用して)、Oracleデータベース用:

DECLARE 
    MyCounter NUMBER := 1; 
BEGIN 
    LOOP 
     EXIT WHEN MyCounter> 1000; 
     INSERT INTO CCHOMEWORK (ID) 
     VALUES(MyCounter); 
     MyCounter := MyCounter+1; 
    END LOOP; 
    COMMIT; 
END; 
/