我在這個視圖中有一個Id列,但它從40,000跳到7,000,000。 我不希望我的瘋狂的存儲過程循環直到它達到7,000,000,所以我想知道如果我可以創建一個列號是行號。這將是某種表達方式,但我不知道如何製作。請協助! 預先感謝您。是否可以在視圖中創建表達式列來顯示行號?
0
A
回答
0
關係表沒有行號。您可以使用內置的ROW_NUMBER() OVER (ORDER BY ...)
函數將行號投影到結果中。
你的程序有很多很多問題。它使用loop @counter作爲查找鍵(!!!)。它假定迭代之間的密鑰穩定性(即假定@ counter + 1 是下一個密鑰,忽略任何concurent插入/刪除)。它假設循環內部是穩定的(沒有交易,沒有鎖定以確保EXISTS的有效性)。
你試圖做的是嘗試模仿鍵集驅動遊標。只需使用鍵集遊標。
0
你真的應該做你正在做的更新,而不是循環。但如果你堅持......
declare @ID int
declare @LastID int
select @LastID = 0
while (1 = 1)
begin
select @ID = min(Id)
from [vCategoryClaimsData]
where Id > @LastID
-- if no ID found then we've reached the end of the table
if @ID is null break
-- look up the data for @ID
SELECT @claim_Number = dbo.[vCategoryClaimsData].[Claim No],
...
where Id = @LastID
-- do your processing here
...
-- set @LastID to the ID you just processed
select @LastID = @ID
end
確保Id列索引。這將允許跳過非順序的Id值。
這就是說,它看起來像你正在做的處理可以用更新語句處理。這樣會更有效率,並消除其他人提出的許多問題。
0
如果可以,請嘗試重寫存儲過程以使用集合與基於行的處理。
要做你所需要的,你將使用ROW_NUMBER函數。爲此,我在下面提供了一些示例代碼。
USE tempdb
GO
IF OBJECT_ID('tempdb.dbo.IDRownumbersView') IS NOT NULL
DROP VIEW5 dbo.IDRownumbersView
IF OBJECT_ID('tempdb.dbo.IDRownumbersTable') IS NOT NULL
DROP TABLE dbo.IDRownumbersTable
CREATE TABLE dbo.IDRownumbersTable
(
RowID int PRIMARY KEY CLUSTERED
,CharValue varchar(5)
,DateValue datetime
)
INSERT INTO IDRownumbersTable VALUES (10, 'A', GETDATE())
INSERT INTO IDRownumbersTable VALUES (20, 'B', GETDATE())
INSERT INTO IDRownumbersTable VALUES (30, 'C', GETDATE())
INSERT INTO IDRownumbersTable VALUES (40, 'D', GETDATE())
INSERT INTO IDRownumbersTable VALUES (50, 'E', GETDATE())
INSERT INTO IDRownumbersTable VALUES (100, 'F', GETDATE())
INSERT INTO IDRownumbersTable VALUES (110, 'G', GETDATE())
INSERT INTO IDRownumbersTable VALUES (120, 'H', GETDATE())
GO
CREATE VIEW dbo.IDRownumbersView
AS
SELECT ROW_NUMBER() OVER (ORDER BY RowID ASC) AS RowNumber
,RowID
,CharValue
,DateValue
FROM dbo.IDRownumbersTable
GO
SELECT * FROM dbo.IDRownumbersView
相關問題
- 1. Rails:是否可以在「索引」或「顯示」視圖中添加「創建」表單?
- 2. 是否可以在表達式語言中創建日期值?
- 3. 是否可以創建一個視圖,從列表中選取列的列表?
- 4. 是否可以在couchbase中創建視圖的視圖?
- 5. 是否可以在「顯示視圖」菜單中創建子文件夾?
- 6. 是否可以使用表達式作爲默認值在MySQL中創建列?
- 7. Demandware業務經理:是否可以在目錄列表視圖中顯示ATS?
- 8. 是否可以在逗號表達式中加入「delete」
- 9. 是否可以顯示用戶列表?
- 10. 是否可以通過編程方式創建SharePoint列表視圖作爲Gant圖表視圖?
- 11. 是否可以在並排差異輸出中顯示行號?
- 12. 我可以創建一個Array列表,然後調用它以顯示在列表視圖中嗎?
- 13. 在PHP中使用正則表達式時可以顯示行號嗎?
- 14. 實體是否可以在視圖中重複顯示UI?
- 15. 是否可以在Windows窗體中顯示xaml視圖
- 16. 是否可以在Microsoft Word中使用VBA創建樹視圖?
- 17. 是否可以在Access 2010中創建視圖?
- 18. 是否可以在視圖中從csv創建django模型?
- 19. 在表達式中創建的圖像是否立即生成?
- 20. 是否可以創建一個正則表達式約束類型的提示?
- 21. 是否可以截取視圖而不顯示視圖?
- 22. 是否可以從另一個視圖創建視圖?
- 23. 是否可以在CSS中使用通配符執行正則表達式來創建較少的代碼?
- 24. 是否可以在正則表達式中使用組而不顯示結果?
- 25. 是否可以在正則表達式中執行加法?
- 26. 在列表視圖中顯示行來自.InI文件
- 27. android:如何在空列表視圖中顯示以下模式?
- 28. 如何以編程方式在JQM中創建列表視圖
- 29. 以編程方式在asp.net中創建列表視圖
- 30. 在MVC中以列表形式創建動態視圖
插入代碼塊廢話不起作用 – Marlon 2009-08-17 16:37:38
它工作得很好。 – skaffman 2009-08-17 16:45:23
謝謝。現在幫助我請大聲笑。 – Marlon 2009-08-17 16:54:41