Лабораторные работы БД. Отчет по лабораторной работе. 2 Используя ms access перенести полученную модель в бд, используя таблицы и схему данных
Скачать 5.14 Mb.
|
Удаление хранимой процедуры DROP PROCEDURE {имя_процедуры} [,...n] Выполнение хранимой процедуры Для выполнения хранимой процедуры используется команда: [[ EXEC [ UTE ] имя_процедуры [; номер ] [[ @ имя_параметра =]{ значение | @ имя_переменной } [ OUTPUT ]|[ DEFAULT ]][,... n ] Если вызов хранимой процедуры не является единственной командой в пакете, то присутствие команды EXECUTE обязательно. Более того, эта команда требуется для вызова процедуры из тела другой процедуры или триггера. Использование ключевого слова OUTPUT при вызове процедуры разрешается только для параметров, которые были объявлены при создании процедуры с ключевым словом OUTPUT. Когда же при вызове процедуры для параметра указывается ключевое слово DE- FAULT, то будет использовано значение по умолчанию. Естественно, указанное слово DEFAULT разрешается только для тех параметров, для которых определено значение по умолчанию. Из синтаксиса команды EXECUTE видно, что имена параметров могут быть опу- щены при вызове процедуры. Однако в этом случае пользователь должен указывать зна- чения для параметров в том же порядке, в каком они перечислялись при создании про- цедуры. Присвоить параметру значение по умолчанию, просто пропустив его при пере- числении, нельзя. Если же требуется опустить параметры, для которых определено зна- чение по умолчанию, достаточно явного указания имен параметров при вызове храни- мой процедуры. Более того, таким способом можно перечислять параметры и их зна- чения в произвольном порядке. Отметим, что при вызове процедуры указываются либо имена параметров со значениями, либо только значения без имени параметра. Их комбинирование не допус- кается. Использование RETURN в хранимой процедуре Позволяет выйти из процедуры в любой точке по указанному условию, а также поз- воляет передать результат выполнения процедуры числом, по которому можно судить о качестве и правильности выполнения процедуры. Пример создания процедуры без пара- метров: CREATE PROCEDURE Count_Books AS Select count ( Code_book ) from Books Go Задание 1. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью ко- манды EXEC Count_Books Проверьте результат. Пример создания процедуры c входным параметром: CREATE PROCEDURE Count_Books_Pages @Count_pages as Int AS Select count ( Code_book ) from Books WHERE Pages >= @Count_pages Go Задание 2. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью ко- манды EXEC Count_Books_Pages 100 Проверьте результат. Пример создания процедуры c входными параметрами: CREATE PROCEDURE Count_Books_Title @Count_pages as Int , @Title AS Char ( 10 ) AS Select count ( Code_book ) from Books WHERE Pages >= @Count_pages AND Title_book LIKE @Title Go Задание 3. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью ко- манды EXEC Count_Books_Title 100 , 'П%' Проверьте результат. Пример создания процедуры c входными параметрами и выходным параметром: CREATE PROCEDURE Count_Books_Itogo @Count_pages Int , @Title Char ( 10 ) , @Itogo Int OUTPUT AS Select @Itogo = count ( Code_book ) from Books WHERE Pages >= @Count_pages AND Title_book LIKE @Title Go Задание 4. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите с помощью набора команд: Declare @q As int EXEC Count_Books_Itogo 100 , 'П%' , @q output select @q Проверьте результат. Пример создания процедуры c входными параметрами и RETURN: CREATE PROCEDURE checkname @param int AS IF ( SELECT Name_author FROM authors WHERE Code_author = @param ) = 'Пушкин А.С.' RETURN 1 ELSE RETURN 2 Задание 5. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команд: DECLARE @return_status int EXEC @return_status = checkname 1 SELECT 'Return Status' = @return_status Пример создания процедуры без параметров для увеличения значения ключевого поля в таблице Purchases в 2 раза: CREATE PROC update_proc AS UPDATE Purchases SET Code_purchase = Code_purchase * 2 Процедура не возвращает никаких данных. Задание 6. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью ко- манды EXEC update_proc Пример процедуры с входным параметром для получения всей информации о кон- кретном авторе: CREATE PROC select_author @k CHAR ( 30 ) AS SELECT * FROM Authors WHERE name_author = @k Задание 7. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команд: EXEC select_author 'Пушкин А.С.' или select_author @k = 'Пушкин А.С.' или EXEC select_author @k = 'Пушкин А.С.' Пример создания процедуры с входным параметром и значением по умолчанию для увеличения значения ключевого поля в таблице Purchases в заданное количе- ство раза (по умолчанию в 2 раза): CREATE PROC update_proc @p INT = 2 AS UPDATE Purchases SET Code_purchase = Code_purchase * @p Процедура не возвращает никаких данных. Задание 8. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команд: EXEC update_proc 4 или EXEC update_proc @p = 4 или EXEC update_proc --будет использовано значение по умолчанию. Пример создания процедуры с входным и выходным параметрами. Создать про- цедуру для определения количества заказов, совершенных за указанный период: CREATE PROC count_purchases @d1 SMALLDATETIME , @d2 SMALLDATETIME , @c INT OUTPUT AS SELECT @c = count ( Code_purchase ) from Purchases WHERE Date_order BETWEEN @d1 AND @d2 SET @c = IS NULL( @c, 0 ) Задание 9. Создайте данную процедуру в разделе Stored Procedures базы данных DB_Books через утилиту SQL server Management Studio. Запустите ее с помощью команд: DECLARE @c2 INT EXEC count_purchases ’ 01 - jun - 2006’ , ’ 01 - jul - 2006’ , @c2 OUTPUT SELECT @c2 Варианты заданий к лабораторной работе Общие положения В утилите SQL Server Management Studio создать новую страницу для кода (кнопка «Создать запрос»). Программно сделать активной созданную БД DB_Books с помощью оператора Use. Создать хранимые процедуры c помощью операторов Create procedure, причем самостоятельно определить имена процедур. Каждая процедура будет выполнять по одному SQL запросу. Причем код SQL запросов нужно изменить таким образом, чтобы в них можно было передавать значения полей, по которым осуществляется поиск. Например, исходное задание и запрос: /*Выбрать из справочника поставщиков (таблица Deliveries) названия компаний, теле- фоны и ИНН (поля Name_company, Phone и INN), у которых название компании (поле Name_company) 'ОАО МИР'. SELECT Name_company, Phone, INN FROM Deliveries WHERE Name_company = 'ОАО МИР' */ --В данной работе будет создана процедура: CREATE PROC select_name_company @comp CHAR ( 30 ) AS SELECT Name_company, Phone, IN N FROM Deliveries WHERE Name_company = @comp --Для запуска процедуры используется команда: EXEC select_name_company 'ОАО МИР' Список заданий Задания выполнять для индивидуальной БД, созданной в лабораторной работе №7(3). Вариант 1 1. Вывести список сотрудников, у которых есть хотя бы один ребенок. 2. Вывести список детей, которым выдали подарки в указанный период. 3. Вывести список родителей, у которых есть дети возрастом до 14 лет. 4. Вывести информацию о подарках со стоимостью больше указанного числа, отсор- тированных по дате. Вариант 2 1. Вывести список приборов с указанным типом. 2. Вывести количество отремонтированных приборов и общую стоимость ремонтов у указанного мастера. 3. Вывести список владельцев приборов и количество их обращений, отсортирован- ный по количеству обращений по убыванию. 4. Вывести информацию о мастерах с разрядом больше указанного числа или с датой приема на работу меньше указанной даты. Вариант 3 1. Вывести список цветков с указанным типом листа. 2. Вывести список кодов продаж, по которым продано цветов на сумму больше ука- занного числа. 3. Вывести дату продажи, сумму, продавца и цветок по указанному коду продажи. 4. Вывести список цветов и сорт для цветов с высотой больше указанного числа или цветущий. Вариант 4 1. Вывести список лекарств с указанным показанием к применению. 2. Вывести список дат поставок, по которым продано больше указанного числа од- ноименного лекарства. 3. Вывести дату поставки, сумму, ФИО руководителя от поставщика и название ле- карства по коду поступления больше указанного числа. 4. Вывести список лекарств и единицы измерения для лекарств с количеством в упа- ковке больше указанного числа или кодом лекарства меньше определенного зна- чения. Вариант 5 1. Вывести список сотрудников с указанной должностью. 2. Вывести список списанного оборудования по указанной причине. 3. Вывести дату поступления, название оборудования, ФИО ответственного и дату списания для оборудования, списанного в указанный период. 4. Вывести список оборудования с указанным типом или с датой поступления больше определенного значения. Вариант 6 1. Вывести список блюд с весом больше указанного числа. 2. Вывести список продуктов, в названии которых встречается указанный фрагмент слова. 3. Вывести объем продукта, название блюда, название продукта с кодом блюда от указанного начального значения по определенному конечному значению. 4. Вывести порядок приготовления блюда и название блюда с количеством углево- дов больше определенного значения или количеством калорий больше указанного значения. Вариант 7 1. Вывести список сотрудников с указанной должностью. 2. Вывести список документов, в содержании которых встречается указанный фраг- мент слова. 3. Вывести дату регистрации, тип документа, ФИО регистратора и название органи- зации для документов, зарегистрированных в указанный период. 4. Вывести список зарегистрированных документов с определенным типом доку- мента или с датой регистрации больше указанного значения. Вариант 8 1. Вывести список сотрудников с указанной причиной увольнения. 2. Вывести список документов с датой регистрации в указанный период. 3. Вывести дату регистрации, причину увольнения, ФИО сотрудника для докумен- тов, зарегистрированных в указанный период. 4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне. Вариант 9 1. Вывести список сотрудников, бравших отпуск указанного типа. 2. Вывести список документов с датой регистрации в указанный период. 3. Вывести дату регистрации, тип отпуска, ФИО сотрудника для документов, заре- гистрированных в указанный период. 4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне. Вариант 10 1. Вывести список сотрудников с указанной должностью. 2. Вывести список документов, в содержании которых встречается указанный фраг- мент слова. 3. Вывести дату регистрации, тип документа, ФИО отправителя и название органи- зации для документов, зарегистрированных в указанный период. 4. Вывести список зарегистрированных документов с указанным типом документа или с кодом документа меньше определенного значения. Вариант 11 1. Вывести список сотрудников, назначенных на указанную должность. 2. Вывести список документов с датой регистрации в указанный период. 3. Вывести дату регистрации, должность, ФИО сотрудника для документов, зареги- стрированных в указанный период. 4. Вывести список зарегистрированных документов с кодом документа в указанном диапазоне. Вариант 12 1. Вывести список оборудования с указанным типом. 2. Вывести список оборудования, которое брал в прокат определенный клиент. 3. Вывести список лиц, бравших оборудование в прокат и количество их обращений, отсортированный по количеству обращений по убыванию. 4. Вывести информацию о клиентах, отсортированных по адресам. Вариант 13 1. Вывести список поставщиков, отсортированный по количеству закупленного у них оборудования. 2. Вывести список закупленного оборудования указанного типа. 3. Вывести дату покупки, название оборудования, цену покупки, данные поставщика для оборудования, закупленного в указанный период. 4. Вывести список оборудования с указанным типом или с датой поступления больше определенного значения. Контрольные вопросы 1. Что такое хранимая процедура? 2. Где выполняются хранимые процедуры? 3. Как активизируются хранимые процедуры? 4. В чем преимущества использования хранимых процедур? 5. Какие типы хранимых процедур имеются в SQL Server? 6. Что такое триггер? 7. В чем преимущества использования триггеров? Лабораторная работа 10(6) СОЗДАНИЕ КЛИЕНТСКОЙ ЧАСТИ ПРИЛОЖЕНИЯ ДЛЯ ПРОСМОТРА, РЕДАКТИРОВАНИЯ ДАННЫХ БД. ВЫЗОВ ХРАНИМЫХ ПРОЦЕДУР ИЗ КЛИЕНТСКОЙ ЧАСТИ СОЗДАНИЕ ОТЧЕТНЫХ ФОРМ В КЛИЕНТСКОМ ПРИЛОЖЕНИИ Цель работы – научиться создавать клиентское приложение для работы с базой данных с применением встроенных инструментов на Visual C#, научиться создавать формы отчетных документов по данным БД Содержание работы: 1. Выполнение всех заданий по ходу лабораторной работы. 2. Выполнение индивидуальных заданий. Пояснения к выполнению работы Для создания клиентского приложения на Visual C# ( примеры приводятся для версии Visual C# не менее 2005) используем пример базы данных c названием DB_Books. 1. В проекте выбираем меню Tools => Connect to DataBase. 2. В открывшемся окне в поле Data Source ставим Microsoft SQL Server, в поле Server Name – SQLEXPRESS, далее в поле Select or enter DB name выбирете имя БД, к которой будем подключаться, и нажмите OK. 3. Теперь открыв окно Server explorer можно увидеть подключенную БД. Нажав на нее, в окне свойств копируем Connection String, она еще пригодится. 4. На форму добавить 5 компонентов типа DataGridView (переимено- вать компоненты на Purchases, Books, Authors, Deliveries, Publish). 5. Во вкладке Data выберем Add New Data Source. В появившемся окне выберем DataBase и нажмем Next. Выбераем нашу БД, жмем Next. В появившемся окне поставим галочку на пункте Table (выбераем все созданные таблици). Жмем Finish. 5. У каждой таблице DataGridView изменим свойство DataSource на соответствующие названию этой таблицы: 6. На основной форме (Form1) добавить компонент. В редакторе меню сделать первый пункт «Работа с таблицами» и в подменю пункты: «Авторы», «Книги», «Издательства», «Поставщики», «Поставки». 7. Создать пять форм, каждую из которых назвать: FormAuthors, FormPurchases, FormBooks, FormDeliveries, FormPublish. 8. На основной форме в подпунктах меню в соответствующих методах Click вызвать соответствующие формы с помощью кода: для FormAuthors: FormAuthors myForm2 = new FormAuthors (); myForm2.Show(); для FormPurchases: FormPurchases myForm3 = new FormPurchases (); myForm3.Show(); для FormBooks: FormBooks myForm4 = new FormBooks (); myForm4.Show(); для FormDeliveries: FormDeliveries myForm5 = new FormDeliveries (); myForm5.Show(); для FormPublish: FormPublish myForm6 = new FormPublish (); myForm6.Show(); 9. На формы FormAuthors, FormPurchases, FormBooks, FormDeliveries, FormPublish добавить по паре компонент типа DataGridView и BindingNavigator. Настроить у DataGridView свойство DataSource для связи с соответствующим источником данных. Затем необходимо настроить у BindingNavigator свойство BindingSource для связи с созданной таблицей(значение должно совпадать со значением свойства элемента DataGridView). |