2016-01-05 146 views
1

我有一个公司名单和公司名单的公司名单。SQL循环插入

现在有一个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; 
+0

你可以张贴的编译错误? – vmachan

+0

这是什么RDBMS?请添加相关标签 - “oracle”,“sql-server”,“mysql”,“postgresql” - 或其他您可能正在使用的内容 –

+0

此Oracle 11g Enterpise版本 – vinr

回答

2

你并不需要为这个循环 - 只需使用一个插入-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' 
+0

因此,如果有10家公司所有的10家公司将获得价值表中添加的功能? – vinr

+0

@vinr是的,确实是 – Mureinik

+0

超级!这工作。谢谢。 – vinr