在Oracle SQL中创建1000行的查询

问题描述 投票:1回答:2

我正在尝试编写一个查询来生成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
sql oracle
2个回答
4
投票

这将创建1000行:

SELECT LEVEL
FROM   DUAL
CONNECT BY LEVEL <= 1000

您可以将其包含在插入中:

INSERT INTO CCHOMEWORK (ID)
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
投票

Oracle数据库的语法(使用PL / SQL):

DECLARE 
    MyCounter NUMBER := 1;
BEGIN
    LOOP
        EXIT WHEN MyCounter> 1000;
        INSERT INTO CCHOMEWORK (ID)
        VALUES(MyCounter);
        MyCounter := MyCounter+1;
    END LOOP;
    COMMIT;
END;
/
© www.soinside.com 2019 - 2024. All rights reserved.