我有一段代码
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文档,但我无法理解我所缺少的内容。任何帮助?
答案 0 :(得分: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
的方式。也许这不是你想要达到的目标。