SQL 循环插入

SQL loop inserts

我有一家公司 table,其中包含公司名称和公司 ID 列表。

现在有一个 Value table 保存有关公司的信息,参考公司 ID。

我需要先获取公司的列表和规模,然后在 Value table.

中为所有公司插入特定的特征信息

这意味着我需要让所有公司在 Value table 中具有这些功能。

我尝试使用下面的 SQL,它给出了编译错误。但是 for 循环在没有插入的情况下工作得很好。

DECLARE
  x NUMBER(2) ;
BEGIN 
    FOR x IN (select distinct company_num from company where comp_IN_comp='T') LOOP
       INSERT INTO VALUE (PROPERTY_NUM, DATA_GROUP, NUM_UPDATES, 
        CREATED_DATE, CREATED_BY, LAST_UPDATED_DATE, LAST_UPDATED_BY, VALUE) VALUES 
        ('78', x ,'0', TO_DATE('2015-12-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 
        'ADMIN', TO_DATE('2015-12-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'ADMIN', 'N');
    END LOOP;
END;

您不需要循环 - 只需使用 insert-select 语句:

INSERT INTO VALUE (PROPERTY_NUM, 
                   DATA_GROUP, 
                   NUM_UPDATES, 
                   CREATED_DATE, 
                   CREATED_BY, 
                   LAST_UPDATED_DATE,
                   LAST_UPDATED_BY,
                   VALUE)
SELECT             DISTINCT '78',
                   company_num,
                   '0',
                   TO_DATE('2015-12-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),
                   'ADMIN',
                   TO_DATE('2015-12-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),
                   'ADMIN',
                   'N'
FROM               company
WHERE              comp_in_comp='T'