我需要在一個事務中連續調用Oracle包中的多個不同過程。事實上,我需要給他們打電話5000次。我想知道我可以用什麼語法將這些調用批量加入Oracle,所以我只需要一次往返。我試過Oracle:批量調用多個過程
PACKAGE.PROCA :1, :2; PACKAGE.PROCB :3, :4, :5;
但是我找回了ORA00900:無效的SQL語句。
任何指針?我知道將參數數組傳遞給過程,但在這種情況下不會有太大幫助。
我需要在一個事務中連續調用Oracle包中的多個不同過程。事實上,我需要給他們打電話5000次。我想知道我可以用什麼語法將這些調用批量加入Oracle,所以我只需要一次往返。我試過Oracle:批量調用多個過程
PACKAGE.PROCA :1, :2; PACKAGE.PROCB :3, :4, :5;
但是我找回了ORA00900:無效的SQL語句。
任何指針?我知道將參數數組傳遞給過程,但在這種情況下不會有太大幫助。
最簡單的是一個匿名的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。
併爲每個呼叫進行網絡往返?聽起來像死亡的表現。重寫存儲過程可能會更好,這樣可以減少網絡流量。
不,我想批量他們進行一次往返。 – 2009-05-28 22:04:06