ЗНАЕТЕ ЛИ ВЫ?

В. Контрольная работа на курсоры



Используется Схема_1.

 

1. С использованием курсора найти и распечатать на экран:

1.1. Первую запись в таблице Customers.

1.2. Четвертую запись в таблице Customers, используя абсолютную адресацию.

1.3. Пятую запись в таблице Customers, используя относительную адресацию.

2. С помощью быстродействующего курсора выбрать первые 5 строк таблицы Salespeople в переменные и распечатать их на экран.

3. Заменить комиссионные Peel-а на 0.2 . Результат распечатать на экран.

4. Заменить комиссионные Axelrod-а на 0.15 . Результат распечатать на экран.

5. Создать вспомогательную таблицу temp_orders. Используя курсор, заполнить таблицу temp_orders следующими записями: номер каждого заказа вместе с именем покупателя, сделавшего этот заказ.

 

Г. Контрольная работа на хранимые процедуры

Теоретические вопросы

1. Что такое хранимая процедура?

2. Как отличить системную хранимую процедуру от пользовательской?

3. Приведите примеры системных хранимых процедур.

4. Что такое простая хранимая процедура? Как она создается?

5. Что такое хранимая процедура с входными параметрами? Как она создается?

6. Что такое хранимая процедура с выходными параметрами? Как она создается?

 

Практические задания

Используется Схема_1.

1. Создайте хранимую процедуру, которая выводит на экран список покупателей (номер, имя, место проживания, rating).

2. Создайте хранимую процедуру, которая выводит на экран список продавцов, комиссионные которых превышают 15%.

3. Создайте хранимую процедуру, которая выводит на экран стоимости заказов, сделанных 2000-10-03

 

Д. Контрольная работа на триггеры

Теоретические вопросы

1. Что такое триггер, и для чего его можно использовать?

2. Где хранится триггер?

3. Какие типы триггеров поддерживает SQL Server?

4. Имеет ли триггер входные и выходные параметры (аргументы)?

5. Когда выполняется триггер, и что его запускает?

 

Практические задания

Используется Схема_1.

1. Создайте триггер, который после изменения данных в таблице Покупатели, распечатывает эту таблицу на экран.

2. У конкретного покупателя меняется продавец, и покупателю нужно сообщить об этом. Для этого:

2.1. В таблицу Покупатели добавьте столбец Tempr.

2.2. Создайте два триггера:

2.2.1. Который после изменения у данного покупателя продавца в таблице Покупатели, в этот новый столбец Tempr заносит текст «У вас изменился продавец».

2.2.2. Который распечатывает на экран информацию об этом покупателе и его новом продавце.

2.3. Дополнительное задание. Создать еще один столбец в таблице Продавцы, который будет содержать дату этого изменения.

Е. Самостоятельное задание

Будем работать с базой данных PUBS, которая описывает предметную область, связанную с книгами.

1. Рассмотрим пример объявления статического курсора, поддерживающего выборку данных в произвольной последовательности и содержащего список имен и фамилий авторов, а также названий написанных ими книг:

Declare @ln varchar(I5),

@fn varchar(15),

@tit varchar(30)

Declare titleauth_curs Insensitive scroll cursor for

select au_lname, au_fname, title

From authors a, titleauthor ta, titles t

where ta.au_id=a.au_id And t.title_id=ta.title_id;

Open titleauth_curs

print @@cursor_rows —определяем количество строк

Fetch first from titleauth_curs

into @ln, @fn, @tit

while @@fetch_status=0 —значение 0 означает окончание просмотра данных

Begin

print 'Имя ' + @ln + ' Фамилия ' + @fn + ' Название ‘ + @tit

Fetch next from titleauth_curs

into @ln, @fn, @tit

End

INSENSITIVE. При использовании этого ключевого слова будет создан статический курсор. Полный результирующий набор курсора копируется в базу данных tempdb. Изменения данных не разрешаются, кроме того, не отображаются изменения, сделанные другими пользователями. Если ключевое слово INSENSITIVE не указывается, по умолчанию создается динамический курсор.

 

2. Рассмотрим открытие локального курсора title_curs. Команды объявления и открытия
локального курсора должны выполняться в одном пакете, то есть нельзя разделять команды DECLARE CURSOR и OPEN командой GO или просто выполнять их по отдельности.

Сразу же продемонстрируем использование глобальной переменной @@cursor_rows
Declare title_curs cursor local static scroll for

select type, summa = SUM (price*ytd_sales),

[sales]= SUM (ytd_sales)

From titles

Group by all type

Open title_curs

print @@cursor_rows

При выполнении этого набора команд сервер выдаст следующие сообщения:





Последнее изменение этой страницы: 2017-01-25; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.238.190.82 (0.006 с.)