Plsql 使用FOR-ALL更新

Plsql 使用FOR-ALL更新,plsql,oracle11g,procedure,Plsql,Oracle11g,Procedure,我有下面的代码 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 E

我有下面的代码

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语句不能在FORALL内部使用


我试着在网上查找oracle文档,但我无法理解我遗漏了什么。有什么帮助吗

我不知道您从哪里获得
n\u index\u update\u 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\u dc
。也许那不是你想要达到的