【问题标题】:How best to store an array in Oracle?如何最好地在 Oracle 中存储数组?
【发布时间】:2013-11-18 23:59:22
【问题描述】:

我计划创建一个包含数字数据数组的 Oracle 数据库。每个数组有 2 到 4 个维度,大约有 1000 个数据点。我会想在 WHERE 子句中使用数组,例如.

Oracle 的数组支持(VARRAYS、嵌套表)似乎令人失望;客户端软件很难以有用的方式检索数据。可能,但很难。

感谢任何建议。

【问题讨论】:

  • 一张好的旧的、普通的桌子有什么问题?
  • > 一张好旧的普通桌子有什么问题?您的意思是像一个包含 X11、X12、X13、X21、X22 等列的表格?这些数组约为 10 x 10 x 10。将每个项目表示为一列不太实用。
  • 您可能想看看 oracle spatial 以及他们如何解决类似问题。
  • 数组是一种组织原则,在关系数据库中不需要。相反,将每个数据点视为一个“事实”,然后将每个事实存储为一个元组。例如具有 DIMENSION1、DIMENSION2、DIMENSION3、DIMENSION4、POINTVALUE 列的表 DATAPOINTS。如果“数组”中值的顺序很重要,请添加 ORDERINDEX 列。通过这种设计,您将拥有最佳的灵活性,并且 SQL 分析的全部功能将任您使用。
  • 杰弗里,有趣的想法。我会试试看。

标签: arrays oracle nested varray


【解决方案1】:

可变数组的简单示例

declare
   type array_example is varray(5) of varchar2(1);
   array array_example := array_example('A', 'B', 'C' , 'D', 'E');
begin
   for i in 1..array.count loop
       dbms_output.put_line(array(i));
   end loop;
end;

【讨论】:

  • Pravin,我发现如果您留在 Oracle 和 PL/SQL 中,VARRAY 非常棒。但它们使得检索数据以在 Oracle 之外进行操作变得困难。
猜你喜欢
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多