Plsql Oracle-如何将记录添加到相同类型的集合(多集联合)
我使用了Plsql Oracle-如何将记录添加到相同类型的集合(多集联合),plsql,oracle11g,multiset,Plsql,Oracle11g,Multiset,我使用了MULTISET UNION将一个集合加载到同一类型的另一个集合中,但是我现在正在处理记录,希望将一个记录添加到同一类型的集合中。无论出于何种原因,我都无法找到合适的语法或正确的方法来实现这一点,因为MULTISET UNION似乎不像我习惯于处理集合的方式那样处理记录 我在最后添加了一个关于这段代码如何工作的摘要(无论如何应该是工作的) 下面是截图和代码 第44行:c_los_ms_tbl_ret:=c_los_ms_tbl_ret MULTISET UNION los_ms_row
MULTISET UNION
将一个集合加载到同一类型的另一个集合中,但是我现在正在处理记录,希望将一个记录添加到同一类型的集合中。无论出于何种原因,我都无法找到合适的语法或正确的方法来实现这一点,因为MULTISET UNION似乎不像我习惯于处理集合的方式那样处理记录
我在最后添加了一个关于这段代码如何工作的摘要(无论如何应该是工作的)
下面是截图和代码
第44行:c_los_ms_tbl_ret:=c_los_ms_tbl_ret MULTISET UNION los_ms_row代码>
摘要
- 已声明记录类型<代码>t\u los\u ms\u rec
t\u los\u ms\u tbl
c_los_ms_tbl_ret
和c_los_ms_tbl
los_func()
第20行:
在los\u func()
a行中被声明为同一类型的t\u los\u ms\u rec
。此行的字段使用假数据填充c\u los\u ms\u tbl\u ret
,因此,这就是它中断的原因PLS-00306:调用'MULTISET\u UNION\u ALL'时使用的参数数量或类型错误。
MULTISET UNION
用于从两个嵌套表创建一个嵌套表。您正试图使用MULTISET UNION
将嵌套表和单个记录连接在一起
有两种方法可以解决此问题:
c_los_ms_tbl_ret := c_los_ms_tbl_ret MULTISET UNION t_los_ms_tbl(los_ms_row);
MULTISET UNION
,只需将新记录附加到表中即可:
c_los_ms_tbl_ret.EXTEND(1);
c_los_ms_tbl_ret(c_los_ms_tbl_ret.COUNT) := los_ms_row;
@卢克沃德非常好。两者都有效。如果你对表演有任何了解,我很好奇。我的假设是,多组联合将有一个更重的负荷,但我不相信我在这里有足够的经验,可以肯定地说,这样或那样。想法?我的直觉告诉我第二个会更快,但我不确定两者之间是否有巨大的性能差异。如果性能确实是您关心的问题,请尝试两种备选方案,看看哪一种效果更快。
c_los_ms_tbl_ret.EXTEND(1);
c_los_ms_tbl_ret(c_los_ms_tbl_ret.COUNT) := los_ms_row;