Я очень новичок в SQL Server. Я использую курсор для заполнения таблицы с идентификаторами; Я только что обнаружил курсоры сегодня. Код выполняется, но он заполняет каждую строку начальным значением.
SET NOCOUNT ON
DECLARE @Irow int
declare @cheese int;
set @cheese = (select (max(balanceid) + 1) from balancetbl)
DECLARE aurum CURSOR FOR
SELECT @Irow
FROM aurumaugupload
OPEN aurum
FETCH aurum INTO @Irow
WHILE @@Fetch_Status = 0
BEGIN
update aurumaugupload set balanceid = @cheese
set @cheese = @cheese + 1;
FETCH aurum INTO @Irow
END
CLOSE aurum
DEALLOCATE aurum
RETURN
Я думаю, что это действительно основная ошибка, но я не вижу ее из-за своей неопытности.
ОБНОВЛЕНИЕ: спасибо, ребята, за ваши ответы на вопросы. Я получил это работает после помощи nonnb. Вот окончательный код:
SET NOCOUNT ON
DECLARE @acc int
declare @start int;
set @start = (select (max(balanceid) + 1) from balancetbl)
DECLARE aurum CURSOR FOR
SELECT accountid
FROM aurumaugupload
OPEN aurum
FETCH aurum INTO @acc
WHILE @@Fetch_Status = 0
BEGIN
update aurumaugupload set balanceid = @start where accountid = @acc
set @start = @start + 1;
FETCH aurum INTO @acc
END
CLOSE aurum
DEALLOCATE aurum
RETURN