2011-07-28 20 views
0

我必須多次調用一個過程才能填充表。問題是程序在每次調用之後會截斷表格。我必須爲每次運行存儲表格的結果。我查閱了文檔,並不知道如何在pl/sql中執行此操作。任何想法都非常感謝。使用pl/sql存儲表中的行

非常感謝!

+0

你能澄清你正在尋找多一點,也許包括一個例子? – Craig

回答

1

程序的每次通話後,得出的數據複製到另一個表具有相同的列:

INSERT INTO TABLE_B 
SELECT * 
FROM TABLE_A; 

當您完成呼叫的過程中,所有的數據是TABLE_B

在PL/SQL,它看起來像這樣:

BEGIN 
    FOR I IN 1..10 LOOP 

    PROC(I); 

    INSERT INTO TABLE_B 
    SELECT * 
    FROM TABLE_A; 

    END LOOP; 

    PROCESS_ALL_DATA(); 
END; 

更新:

如果您沒有權限創建表,那麼你可以存儲在PL部分結果/ SQL表(在內存中):

DECLARE 
    TYPE T_T_A IS TABLE OF A%TYPE; 

    L_IMED_TABLE T_T_A; 

BEGIN 
    FOR I IN 1..10 LOOP 

    PROC(I); 

    SELECT * BULK COLLECT INTO L_IMED_TABLE 
    FROM A; 

    END LOOP; 

    FOR I IN L_IMED_TABLE.FIRST .. L_IMED_TABLE.LAST LOOP 
    PROCESS_RESULT_ROW(L_IMED_TABLE(I)); 
    END LOOP; 

END; 
+0

你好,非常感謝你的回答。如果沒有權限授予創建臨時表的權限,是否可以在沒有臨時表的情況下離開。 – newbie

+0

看到我的更新... – Codo

+0

非常感謝Codo!會試試看)=) – newbie

0

您可以在插入到主表時觸發觸發器並將相同的數據填充到存檔表,您可以在其中添加更多列,如時間戳和呼叫計數器等。