在 Oracle SQL 中创建 1000 行的查询

rob*_*aro 1 sql oracle

我正在尝试编写一个查询来生成 1000 行,我有一个名为 CCHOMEWORK 的表,其中包含 2 列、ID 整数 (PK) 和 StudentID varchar,其中包含所有 1000 行的值。

我试过这个,但我不断收到错误并且不起作用

SET @MyCounter = 1

WHILE @MyCounter < 1000

BEGIN

INSERT INTO CCHOMEWORK
    (ID)
VALUES
    @MyCounter)

    set @MyCounter = @MyCounter + 1;

END
Run Code Online (Sandbox Code Playgroud)

MT0*_*MT0 5

这将创建 1000 行:

SELECT LEVEL
FROM   DUAL
CONNECT BY LEVEL <= 1000
Run Code Online (Sandbox Code Playgroud)

您可以将它包含在您的插入中:

INSERT INTO CCHOMEWORK (ID)
SELECT LEVEL
FROM   DUAL
CONNECT BY LEVEL <= 1000
Run Code Online (Sandbox Code Playgroud)

但是,如果要插入多个连续 ID,最好使用序列:

CREATE SEQUENCE CCHOMEWORK__ID__SEQ
/
Run Code Online (Sandbox Code Playgroud)

然后:

INSERT INTO CCHOMEWORK (ID)
SELECT CC_HOMEWORK__ID__SEQ.NEXTVAL
FROM DUAL
CONNECT BY LEVEL <= 1000;
Run Code Online (Sandbox Code Playgroud)

或者:

BEGIN
  FOR i IN 1 .. 1000 LOOP
    INSERT INTO CCHOMEWORK (ID) VALUES ( CC_HOMEWORK__ID__SEQ.NEXTVAL );
  END LOOP;
END;
/
Run Code Online (Sandbox Code Playgroud)