2009-05-28 47 views
1

我需要在一個事務中連續調用Oracle包中的多個不同過程。事實上,我需要給他們打電話5000次。我想知道我可以用什麼語法將這些調用批量加入Oracle,所以我只需要一次往返。我試過Oracle:批量調用多個過程

PACKAGE.PROCA :1, :2; PACKAGE.PROCB :3, :4, :5; 

但是我找回了ORA00900:無效的SQL語句。

任何指針?我知道將參數數組傳遞給過程,但在這種情況下不會有太大幫助。

回答

2

最簡單的是一個匿名的PL/SQL塊。 EG:

DECLARE 
    v_file_loc varchar2(100) := '....'; 
    v_file_name varchar2(100) := '....'; 
    v_text varchar2(4000); 
BEGIN 
    dbms_output.put_line('Starting file read'); 
    fp := UTL_FILE.FOPEN(v_file_loc,v_file_name,'r'); 
    LOOP 
     utl_file.GET_LINE(fp,v_text); 
     dbms_output.put_line(v_text); 
    END LOOP; 
    UTL_FILE.FCLOSE(fp); 
END; 
/

然後你可以去額外的步驟,實際上創造出這是DB的程序,然後簡單的過程。 PS。最後的斜槓告訴SQL * Plus或SQL Developer執行代碼。這取決於您使用什麼來運行SQL。

0

併爲每個呼叫進行網絡往返?聽起來像死亡的表現。重寫存儲過程可能會更好,這樣可以減少網絡流量。

+0

不,我想批量他們進行一次往返。 – 2009-05-28 22:04:06