MS SQL SERVER

Курсор для суммы

 

            Есть база данных «Касса», созданная в СУБД «MS SQL Server 2005», в этой базе есть таблицы «Продажи» и «Чеки». Нужно заполнить поле «Сумма» таблицы «Чеки» с помощью курсора.

Рис. 1. Поля таблиц «Чеки» и «Продажи» Рис. 1. Поля таблиц «Чеки» и «Продажи»

Рис. 1. Поля таблиц «Чеки» и «Продажи»

 

 

Рис. 2. Данные таблиц «Чеки» и «Продажи»

 

            Нажимаем кнопку «Создать запрос», пишем код и выполняем его

USE Касса;

-- Описываем КУРСОР

DECLARE Kursor_Summa CURSOR FOR SELECT Количество, Цена, [Код чека]

FROM Продажи

-- Описываем ПЕРЕМЕННЫЕ

DECLARE @Kolichestvo INT,

        @Cena MONEY,

                               @Kod_Cheka BIGINT,

        @Summa MONEY;

--Открываем курсор

OPEN Kursor_Summa

--Заносим данные курсора в переменные

FETCH NEXT FROM Kursor_Summa INTO @Kolichestvo, @Cena, @Kod_Cheka

-- Цикл обхода

WHILE @@FETCH_STATUS=0

                BEGIN

                -- Cчитаем СУММУ чека

                SET @Summa = @Kolichestvo * @Cena;

                -- Записываем СУММУ в таблицу ЧЕКИ

                UPDATE Чеки SET Сумма=@Summa WHERE [Код чека]=@Kod_Cheka;

                FETCH NEXT FROM Kursor_Summa INTO @Kolichestvo, @Cena, @Kod_Cheka;

                END

-- Закрываем курсор

CLOSE Kursor_Summa

-- Освобождаем память от курсора

DEALLOCATE Kursor_Summa

 

            Результат выполнения запроса показан ниже. Как видно из рисунка, сумма посчитана правильно и вставлена в таблицу «Чеки».

Рис. 3. Результат расчета суммы

 


База для Рефспама (январь 2017)
База для Рефспама (январь 2017)


База автомоек Москвы (2000+ шт) 0
База автомоек Москвы (2000+ шт) 0


База форумов RU русскоязычных 2017 год
База форумов RU русскоязычных 2017 год