SQL循环插入

时间:2016-01-05 22:02:17

标签: sql oracle loops sql-insert

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

现在有一个Value表,其中包含有关公司的信息,并参考公司ID。

我需要首先获取公司的列表和大小,并且所有公司都要在Value表中插入特定的功能信息。

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

我尝试使用下面的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;

1 个答案:

答案 0 :(得分:2)

您不需要循环 - 只需使用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'