2014-09-02 27 views
0

我怎樣才能轉換以下到Teradata的存儲過程或某些功能在表批量插入存儲過程: WHILE EXISTS(SELECT * FROM#temp_set1) BEGIN功能或用於通過集

/*組statemnts的:刪除插入等

like */ INSERT INTO #temp_set SELECT TOP 200 * FROM#temp_set1; INSERT INTO Activepull 爲SELECT * FROM#temp_set1 ,這應該發生對於每組200個,直到所有的插入

端;

#temp_set1中有超過60000行,所以想按集合插入。 謝謝。

+0

#temp_set是否有標識列? – Cheruvian 2014-09-02 21:15:07

+0

@Cheruvian不,沒有標識列 – user3438498 2014-09-02 21:19:35

+1

爲什麼要處理300行中的600行,每行300行?你能說出這是實際使用的嗎? – dnoeth 2014-09-02 22:07:56

回答

0

寫在我的手機上,但我會用over表達式。它創建了一種僞Identity列,然後您可以使用它進行分頁。您甚至可以根據訂單條款選擇訂單。

Declare @IntervalSize int = 100 
Declare @BeginSet int = 0, 
     @EndSet int = @IntervalSize 
While @Counter < (Select Max(ROW_NUMBER() OVER (ORDER BY someColumn desc) From #temp_set1) 
Begin 
    Insert Into #temp_set 
    Select *, Row_Number() Over (Order By someColumn desc) As MyIdentity 
    Where MyIdentity Between @BeginSet And @EndSet 

    Select @BeginSet = @BeginSet + @IntervalSize, 
      @EndSet = @EndSet + @IntervalSize 
End