2016-01-05 192 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