Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab 2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
75.78 Кб
Скачать

Хранимые процедуры

Хранимые процедуры представляют уровень абстракции, ограждающий приложение от низкоуровневой структуры базы данных. Будучи главной опорой любого приложения SQL Sеrver, хранимые процедуры позволяют изменять структуру баз данных и управлять производительностью без переписывания приложений и распространения их обновлений [2].

Хранимая процедура – это одна или несколько инструкций, которым дано имя и которые хранятся в базе данных. Почти любая команда языка T-SQL может быть включена в хранимую процедуру, что делает процедуры подходящими для приложений и для решения административных задач. В хранимых процедурах не могут применяться лишь следующие команды:

  • USE <database_name>;

  • SET SHOWPLAN_TEXT;

  • SET SHOWPLAN_ALL;

  • SET PARSEONLY;

  • SET SHOWPLAN_XML;

  • CREATE AGGREGATE;

  • CREATE RULE;

  • CREATE DEFAULT;

  • CREATE SCHEMA;

  • CREATE FUNCTION или ALTER FUNCTION;

  • CREATE TRIGGER или ALTER TRIGGER;

  • CREATE PROCEDURE или ALTER PROCEDURE;

  • CREATE VIEW или ALTER VIEW.

При первом обращении к хранимой процедуре SQL Server генерирует планы компиляции и выполнения, которые хранятся в кэше запроса и повторно используются последующим выполнением. Следовательно, применяя хранимые процедуры, вы можете получить небольшой выигрыш в производительности, т.к. при последующих выполнениях хранимой процедуры исчезнет необходимость в синтаксическом анализе, компиляции и генерации плана запроса. Но главное назначение хранимой процедуры – создание защищенного слоя и прикладного интерфейса для ваших баз данных, которые отделяют приложение от изменения в структуре базы данных.

Далее приведена синтаксическая запись общего вида для создания хранимой процедуры [2].

CREATE {PROC | PROCEDURE} [schema_name.] procedure_name [; number]

[ {@parameter [type_schema_name.]data_type}

[VARYING] [= default] [OUT | OUTPUT] [READONLY]

] [, ... n]

[ WITH <procedure_option> [, ... n]]

[ FOR REPLICATION]

AS {<sql_statement> [;][, ... n] | <method_specifier>} [;]

Содержание работы.

  1. Создайте запрос, который будет формировать выборку данных о записях чека с включением данных о проданных товарах. В выборку включить поля: BillID, BillItemID, ProductID, Product.Name, Number, Price, Cost, Bill.Date, BillItem.Date. Используйте внутреннее соединение таблиц (INNER JOIN). Примените условие фильтрации согласно своему варианту.

  2. Создайте запрос, который будет формировать выборку данных с информацией о чеках, проданных товарах и покупателях со следующими полями: BillID, BillItemID, ProductID, BuyerID, Product.Name, Number, Price, Cost, Bill.Date, BillItem.Date, Buyer.Name, Photo. Используйте внешнее левое соединение от таблицы Bill к таблице Buyer (LEFT JOIN).

Объясните, что делает полученный запрос? Почему в этом случае используется внешнее соединение, а не внутреннее, как в предыдущем примере?

  1. Создайте запрос, который будет формировать выборку данных с информацией о чеках, проданных товарах, покупателях и сотрудниках, расширив перечень полей в запросе из п.2. Используйте внешнее правое соединение от таблицы Bill к таблице Employee (RIGHT JOIN).

Объясните, что делает данный запрос?

  1. Создайте запрос, который будет формировать выборку с данными по чекам и покупателям со следующими полями: BuyerID, BillID, Name, Date. Ограничьте выборку данных, используя фильтр по дате в таблице чеков (используйте фильтр в разделе WHERE). Используйте внешнее полное соединение таблиц Buyer и Bill (FULL JOIN).

Объясните, что делает этот запрос?

  1. Создайте запрос, который будет формировать выборку, содержащую все возможные пары (сотрудник, покупатель) со следующими полями: EmployeeID, BuyerID, Buyer.Name, Employee.Name, Employee.Post. Используйте перекрестное соединение таблиц Employee и Buyer (CROSS JOIN).

  2. Сохраните запрос из пункта 1 в виде представления. В среде Microsoft SQL Management Studio в разделе Views используйте команду New View… Назовите представление BillAndProduct. Проверьте результат командой: SELECT * FROM BillAndProduct.

  3. Сохраните запросы из пунктов 2 и 3 аналогичным образом.

  4. Запрос из пункта 4 сохраните в виде хранимой процедуры с одним параметром – датой. Для создания процедуры используйте команду CREATE PROCEDURE или воспользуйтесь командой New Stored Procedure в разделе Programmability/Stored Procedures. Назовите хранимую процедуру BillAndBuyer. Проверьте работоспособность процедуры, используя ее вызов: exec BillAndProduct @date=’2011-07-05’.

  5. Сохраните запрос из пункта 5 в хранимой процедуре.

  6. Подготовьте материал для включения в отчетную презентацию по курсу Базы данных: специальный курс.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]