2012-01-23 34 views
1

我試圖從C#中將10000個值插入Oracle,並使用下面的代碼。非常重要的是,我傳入的數組中的值的順序在Oracle中保留,但每次運行時,值的順序都會更改。我可以更改什麼來停止訂單更改,或者是否有一種完全不同的方法可以用於按設定順序插入10000個可輕鬆檢索的值?如何在Oracle中插入10000個值並使其保持正確的順序?

的數據列表的類型是雙和尺寸的陣列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(); 

任何幫助,將不勝感激。

回答

4
  • 在數據庫中創建一個序列(讓它命名爲seq)。
  • 改變表格添加(seq_id號碼);
  • INSERT INTO DEMO(DISTRIBUTIONSLICES,seq_id)值 :
  • 選擇以這種方式(()DISTRIBUTIONSLICES,seq.nextval):由seq_id

    SELECT * 從演示 爲了

+0

謝謝,完美的作品。 –

7

範式錯誤:SQL數據庫表中的行通常不具有可依賴的順序。

如果您希望能夠按照已知順序檢索行,則需要明確地執行某些操作,例如添加額外的唯一整數列,以定義所需的順序。

然後,您可以使用ORDER BY在您的排序列中檢索您的行,並且它會按您想要的順序爲您提供行。

相關問題