0

I'm trying to mask all other ID's when a specific ID is selected. 但它不会运行。这就是我到目前为止所拥有的。

这是我当前的代码:

USE [DB1]
Declare IDCursor Cursor
    For
        Select ID, Year, Amount, RefreshDate 
        From Table1
        For Update
    Open IDCursor
    Declare @ID int, @Year datetime, @Amount money, @RefreshDate datetime
    Fetch Next From IDCursor 
    Into @ID, @Year, @Amount, @RefreshDate 
    While @@Fetch_Status = 0
Begin
    If @ID <> 0
    SELECT SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 5)

    Else
    Set @ID = 0

End
Close IDCursor 
Deallocate IDCursor
4

2 回答 2

0

你的循环条件While @@Fetch_Status = 0永远不会改变,所以你有一个无限循环。您需要在循环内继续获取:

While @@Fetch_Status = 0
Begin
    ...
    Fetch Next From IDCursor Into @ID, @Year, @Amount, @RefreshDate 
End
于 2014-04-08T18:38:35.613 回答
0

不确定这是否只是一个错字?您是否想以不同的方式执行以下设置@ID?

Begin
    If @ID <> 0
    Set @ID = SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 5)
   --OR MAYBE SELECT @ID = SUBSTRING(CONVERT(varchar(255), NEWID()), 0, 5)

Else
    Set @ID = 0

结尾

于 2014-04-08T13:59:45.553 回答