我需要在.NET(c#)应用程序和Oracle数据库之间传递批量数据。到目前为止,已有两种替代方案,即关联数组和用户定义数据类型表(UDT)
到目前为止,我已经为UDT表设置了一个示例,它非常好用。它的性能远远超过对批量数据的每个项目行进行插入调用,并且我很想留下它,但是我不愿意考虑关联数组。
一位同事告诉我,关联数组是一种语言结构,只能在Oracle的PL / SQL代码中识别,而不是纯SQL。鉴于我们鼓励我们的Oracle开发人员尽可能编写基于集合的SQL,因此选择UDT表似乎是自然的选择。
但是,我有兴趣了解这两种交换批量数据的方法之间的相对优势/劣势,以便我可以做出更明智(合理)的决定。
非常感谢您的帮助。
非常感谢
答案 0 :(得分:2)
从Oracle方面,基于this question on AskTom:
之间的主要区别:
(按表格索引)[=关联数组]和(嵌套 表/可变数组)
是表格的索引 可以在PLSQL中使用,嵌套 表/ varrays在两者中都是可用的 PLSQL 和 SQL。
按表格分类的索引更灵活,您可以期待性能略有提高,但不太可能是一个巨大的改进。如果您只是将数组用作容器来将数据传递给Oracle,那么差异可能太小而无法衡量。
如果您打算使用SQL中的函数,则必须使用嵌套表。