русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Пример 13.6. Курсор для вывода списка приобретенных клиентами из Москвы товаров и их общей стоимости.


Дата добавления: 2013-12-23; просмотров: 1027; Нарушение авторских прав


Пример 13.5. Курсор для вывода списка фирм и клиентов из Москвы.

Пример 13.6. Разработать курсор для вывода списка приобретенных клиентами из Москвы товаров и их общей стоимости. В один курсор заносятся все московские клиенты, затем для каждой строки курсора, т.е. для каждого клиента, определяется и распечатывается другой курсор – его покупки. Подсчитывается общая стоимость покупок клиента.

DECLARE @id_kl INT,

@firm VARCHAR(50),

@fam VARCHAR(50),

@message VARCHAR(80),

@nam VARCHAR(50),

@d DATETIME,

@p INT,

@s INT

SET @s=0

PRINT ' Список покупок'

DECLARE klient_cursor CURSOR LOCAL FOR

SELECT КодКлиента, Фирма, Фамилия

FROM Клиент

WHERE Город='Москва'

ORDER BY Фирма, Фамилия

 

 

OPEN klient_cursor

FETCH NEXT FROM klient_cursor

INTO @id_kl, @firm, @fam



WHILE @@FETCH_STATUS=0

BEGIN

SELECT @message='Клиент '+@fam+

' Фирма '+ @firm

PRINT @message

SELECT @message='Наименование товара Дата

покупки Стоимость'

PRINT @message

DECLARE tovar_cursor CURSOR FOR

SELECT Товар.Название, Сделка.Дата,

Товар.Цена*Сделка.Количество AS

Стоимость

FROM Товар INNER JOIN Сделка ON Товар.

КодТовара=Сделка.КодТовара

WHERE Сделка.КодКлиента=@id_kl

 

OPEN tovar_cursor

FETCH NEXT FROM tovar_cursor

INTO @nam, @d, @p

IF @@FETCH_STATUS<>0

PRINT ' Нет покупок'

WHILE @@FETCH_STATUS=0

BEGIN

SELECT @message=' '+@nam+' '+

CAST(@d AS CHAR(12))+' '+

CAST(@p AS CHAR(6))

PRINT @message

SET @s=@s+@p

FETCH NEXT FROM tovar_cursor

INTO @nam, @d, @p

END

CLOSE tovar_cursor

DEALLOCATE tovar_cursor

 

SELECT @message='Общая стоимость '+

CAST(@s AS CHAR(6))

PRINT @message

 

-- переход к следующему клиенту--

 

FETCH NEXT FROM klient_cursor

INTO @id_kl, @firm, @fam



END

CLOSE klient_cursor

DEALLOCATE klient_cursor

Пример 13.7. Разработать прокручиваемый курсор для клиентов из Москвы. Если номер телефона начинается на 1, удалить клиента с таким номером и в первой записи курсора заменить первую цифру в номере телефона на 4.

DECLARE @firm VARCHAR(50),

@fam VARCHAR(50),

@tel VARCHAR(8),

@message VARCHAR(80)

PRINT ' Список клиентов'

DECLARE klient_cursor CURSOR GLOBAL SCROLL

KEYSET FOR

SELECT Фирма, Фамилия, Телефон

FROM Клиент

WHERE Город='Москва'

ORDER BY Фирма, Фамилия

FOR UPDATE

OPEN klient_cursor

FETCH NEXT FROM klient_cursor

INTO @firm, @fam, @tel

WHILE @@FETCH_STATUS=0

BEGIN

SELECT @message='Клиент '+@fam+

' Фирма '+@firm ' Телефон '+ @tel

PRINT @message

 

-- если номер телефона начинается на 1,

-- удалить клиента с таким номером

IF @tel LIKE ‘1%’

DELETE Клиент

WHERE CURRENT OF klient_cursor

ELSE

 

-- переход к следующему клиенту

 

FETCH NEXT FROM klient_cursor

INTO @firm, @fam, @tel

END

 

FETCH ABSOLUTE 1 FROM klient_cursor

INTO @firm, @fam, @tel

 

-- в первой записи заменить первую цифру в

-- номере телефона на 4

 

UPDATE Клиент SET Телефон=’4’ +

RIGHT(@tel,LEN(@tel)-1))

WHERE CURRENT OF klient_cursor

SELECT @message='Клиент '+@fam+' Фирма '+

@firm ' Телефон '+ @tel

PRINT @message

CLOSE klient_cursor

DEALLOCATE klient_cursor



<== предыдущая лекция | следующая лекция ==>
Пример 13.4. Использование переменной для переприсваивания курсора. | Определение триггера в стандарте языка SQL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.