2013-04-04 65 views
0

我已經follwing一段代碼更新使用FOR-ALL

TYPE t_dc IS TABLE OF TEMP_DC%ROWTYPE INDEX BY PLS_INTEGER; 
o_u_dc t_dc; 
n_index_update_dc BINARY_INTEGER := 0; 

,然後在腳本的末尾,我有

  IF n_index_update_dc > 0 
      THEN 
       FORALL dc IN o_u_dc.first..o_u_dc.last SAVE EXCEPTIONS 
        UPDATE TEMP_DC 
        SET COL1 = o_u_dc(n_index_update_dc).col1 
        WHERE COLPK = o_u_dc(n_index_update_dc).COLPK; 
      END IF; 
      COMMIT; 

,我得到錯誤116 7 PLS-00435: DML statement without BULK In-BIND cannot be used inside FORALL

我試着在網上查找oracle文檔,但我不明白我錯過了什麼。任何幫助?

回答

1

我不知道你從n_index_update_dc,但你應該使用的代碼是:

  IF n_index_update_dc > 0 THEN 
       FORALL dc IN o_u_dc.first..o_u_dc.last SAVE EXCEPTIONS 
        UPDATE TEMP_DC 
        SET COL1 = o_u_dc(dc).col1 
        WHERE COLPK = o_u_dc(dc).COLPK; 
      END IF; 
      COMMIT; 

這也取決於你如何填補o_u_dc。也許這不是你想達到的。