0

我有以下代码

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 文档上在线查找,但我不明白我缺少什么。有什么帮助吗?

4

1 回答 1

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。也许这不是你想要实现的。

于 2013-04-05T02:00:50.843 回答