Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хранимая процедура неправильно отрабатывает  [new]
leklerk
Member

Откуда:
Сообщений: 395
Добрый день! Работаю в SQL Server 2005, запускаю хранимую процедуру, о она вставляет последнюю запись курсора 2 раза вместо одного. Подскажите, что не так?
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
 
ALTER procedure [dbo].[Вставка_Табель_малая]
 
AS    
 
DECLARE @Компьютер  VARCHAR(30)
 
DECLARE КурсорПользователи CURSOR
FOR SELECT Компьютер FROM Пользователи
 
OPEN КурсорПользователи
 
WHILE @@Fetch_Status = 0 BEGIN
    FETCH КурсорПользователи INTO @Компьютер
    INSERT INTO Табель_малая VALUES(
        @Компьютер,
        Convert(VARCHAR(30),Getdate(),104),
        '',
        '',
        1)
END
19 мар 12, 20:09    [12276865]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура неправильно отрабатывает  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Уберите курсор вообще, он тут нафиг не нужен.
19 мар 12, 20:16    [12276898]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура неправильно отрабатывает  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
2 раза потому, что надо проверять стстояние после

FETCH КурсорПользователи INTO @Компьютер
if @@Fetch_Status <> 0 --
19 мар 12, 20:27    [12276927]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура неправильно отрабатывает  [new]
komrad
Member

Откуда:
Сообщений: 5760
Гавриленко Сергей Алексеевич
Уберите курсор вообще, он тут нафиг не нужен.

+1
19 мар 12, 20:31    [12276940]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура неправильно отрабатывает  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Cамое простое будет написать.

WHILE 1 = 1 BEGIN
    FETCH КурсорПользователи INTO @Компьютер
    IF @@Fetch_Status != 0
       BREAK
    INSERT INTO Табель_малая VALUES(
        @Компьютер,
        Convert(VARCHAR(30),Getdate(),104),
        '',
        '',
        1)
END


А самое правильное - убрать курсор.
19 мар 12, 20:31    [12276942]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура неправильно отрабатывает  [new]
Гоздь
Guest
забудь про курсоры, кому скзали!!!

ALTER procedure [dbo].[Вставка_Табель_малая]
AS    

	INSERT INTO Табель_малая 
	SELECT Компьютер, Convert(VARCHAR(30),Getdate(),104), '', '', 1
	FROM Пользователи
	 
19 мар 12, 20:46    [12276991]     Ответить | Цитировать Сообщить модератору
 Re: Хранимая процедура неправильно отрабатывает  [new]
leklerk
Member

Откуда:
Сообщений: 395
Всем спасибо за помощь!
20 мар 12, 13:43    [12280805]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить