如何在Oracle中插入10000个值并保持正确的顺序?

时间:2012-01-23 11:32:53

标签: oracle

我正在尝试从C#向Oracle插入10000个值,并使用下面的代码。非常重要的是,我传入的数组中的值的顺序是在Oracle中维护的,但是每次运行它时,值的顺序都会发生变化。我可以更改什么来停止订单更改,或者我可以使用一种完全不同的方法来按设定顺序插入10000个值,这些方法可以轻松检索?

datalist是double类型和10000的数组。

var oc = new OracleConnection(ConnectionString);
oc.Open();
var transaction = oc.BeginTransaction();
OracleCommand command = new OracleCommand("",oc);
command.CommandText = ("INSERT INTO DEMO (DISTRIBUTIONSLICES) values (:DISTRIBUTIONSLICES)");

OracleParameter distributionslices = new OracleParameter("DISTRIBUTIONSLICES",OracleDbType.Varchar2, ParameterDirection.Input);

distributionslices.Value = datalist;

command.Parameters.Add(distributionslices);
command.ArrayBindCount = 10000;

command.ExecuteNonQuery();

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:7)

范例错误:SQL数据库表中的行通常没有可依赖的顺序。

如果您希望能够以已知顺序检索行,则需要做一些明确的事情来实现这一点,例如添加额外的一列唯一整数来定义您想要的顺序。

然后,您可以在订购列上使用ORDER BY检索行,它将按您所需的顺序为您提供行。

答案 1 :(得分:4)

  • 在数据库中创建一个序列(让我们将其命名为seq)。
  • 更改表格添加(seq_id数字);
  • INSERT INTO DEMO(DISTRIBUTIONSLICES,seq_id)值 (:DISTRIBUTIONSLICES,seq.nextval())
  • 以这种方式选择:

    选择* 从演示 按顺序排列