Создание представлений и хранимых процедур

После того как Мэри предоставлен доступ к базе данных TestData, можно создать некоторые объекты базы данных, такие как представление или хранимая процедура, а затем предоставить Мэри доступ к ним. Представление является хранимой инструкцией SELECT, а хранимая процедура представляет собой одну или более инструкций Transact-SQL, выполняемых в виде пакета.

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

В этом примере используется инструкция CREATE VIEW, чтобы создать представление, которое выбирает только два столбца в таблице Products. Затем с помощью инструкции CREATE PROCEDURE создается хранимая процедура, которая принимает цену в качестве параметра и возвращает только те продукты, цена которых меньше значения, указанного в качестве параметра.

Создание представления

  • Выполните следующую инструкцию, создающую очень простое представление, которое выполняет инструкцию select и возвращает названия и цены продуктов пользователю.

    CREATE VIEW vw_Names
       AS
       SELECT ProductName, Price FROM Products;
    GO
    

Тестирование представления

  • С представлениями обращаются так же, как с таблицами. Используйте инструкцию SELECT, чтобы получить доступ к представлению.

    SELECT * FROM vw_Names;
    GO
    

Создание хранимой процедуры

  • В следующем примере создается хранимая процедура pr_Names с входным параметром @VarPrice типа money. Эта хранимая процедура печатает инструкцию Products less than, соединенную операцией объединения с входным параметром, тип которого преобразуется из money в varchar(10). Затем процедура выполняет инструкцию SELECT на представлении, передавая входной параметр в предложение WHERE. Возвращаются все продукты, цена которых меньше значения входного параметра.

    CREATE PROCEDURE pr_Names @VarPrice money
       AS
       BEGIN
          -- The print statement returns text to the user
          PRINT 'Products less than ' + CAST(@VarPrice AS varchar(10));
          -- A second statement starts here
          SELECT ProductName, Price FROM vw_Names
                WHERE Price < @varPrice;
       END
    GO
    

Тестирование хранимой процедуры

  • Чтобы выполнить хранимую процедуру, введите и выполните следующую инструкцию. Эта процедура должна возвратить названия двух продуктов, введенных в таблицу Products на занятии 1, цена которых меньше 10.00.

    EXECUTE pr_Names 10.00;
    GO