【发布时间】:2013-11-23 05:29:34
【问题描述】:
是否可以使用数组作为合并语句的源
例如我有以下合并语句,编译时出现错误。 如何使用数组合并作为源表?
PLS-00436: implementation restriction: cannot reference fields of BULK In-BIND
table of records
程序代码
CREATE or REPLACE PROCEDURE my_proc (varray IN my_array)
AS
BEGIN
FORALL i IN varray.first..varray.last
MERGE INTO tab t
USING dual
ON ( t.proj_id = varray(i).proj_id)
WHEN MATCHED THEN
UPDATE set
proj_title = varray (i).proj_title
WHERE proj_id = varray (i).proj_id
WHEN NOT MATCHED THEN
insert (proj_id,proj_title)
values (varray (i).proj_id,varray (i).proj_title);
values (varray (i).proj_id,varray (i).proj_title);
【问题讨论】:
-
查看这篇文章以获得解决方法:PLS-00436 in 10g - Workaround
-
@PrzemyslawKruglej 非常感谢,这真的很有帮助。所以这是10g的限制吧?
-
是的,在 11g 中,您可以访问
FORALL语句中的各个记录字段,这与在 10g 中您会收到与您的问题相关联的错误不同。 -
@PrzemyslawKruglej 如果您作为答案发布,我将很乐意接受。
标签: sql oracle plsql merge oracle10g