2011-01-05 40 views
2

我有要求在.NET(c#)应用程序和Oracle数据库之间传递批量数据。到目前为止,他们自己提出了两种替代方案,即关联数组和用户定义数据类型表(UDT)。关联数组与.NET/Oracle数据交换的UDT表

到目前为止,我已经为UDT表建立了一个示例,它很好地工作。它的执行效果要比为每个批量数据行项目插入一个插入调用要好得多,并且试图将它放在那个位置,但是我会默默不去考虑关联数组。

一位同事告诉我,关联数组是一种语言结构,只能在Oracle的PL/SQL代码中识别,而不能由纯SQL识别。鉴于我们鼓励Oracle开发人员尽可能编写基于集合的SQL,所以选择UDT表似乎是自然选择。

但是,我想知道更多这两种交换批量数据的方法之间的相对优势/劣势,以便我可以做出更明智的(合理的)决策。

您的帮助将不胜感激。

非常感谢

回答

2

从Oracle侧,基于this question on AskTom

之间的主要区别在于:(由表索引)

[=关联数组]和(嵌套 表/ varrays)

是表索引表只有 PLSQL中可用,嵌套 tables/varrays在 PLSQL SQL中均可用。

通过表索引更灵活一点,你可以期望性能略有增加,但它不可能是一个巨大的改进。如果您只是使用数组作为容器将数据传递给Oracle,则差异可能太小而无法衡量。

如果您计划使用SQL中的函数,则必须使用嵌套表。