Проектирование информационных систем в Microsoft SQL Server 2008 и Visual Studio 2008

Создание динамических запросов при помощи хранимых процедур

Показывать лекцию целиком

Цель: изучить процесс создания динамических запросов при помощи хранимых процедур

Хранимая процедура - SQL запрос, который имеет параметры, то есть он выполняется как обычная процедура (мы задаем ее имя и передаем в хранимую процедуру значение параметров.) В зависимости от значения параметров хранимой процедуры мы получаем тот или иной результат запроса.

Замечание. В SQL сервере хранимые процедуры реализуют динамические запросы, выполняемые на стороне сервера.

Рассмотрим создание хранимых процедур при помощи команд языка SQL. Чтобы отобразить хранимые процедуры рабочей БД панели на панели инструментов. В рабочей области окна сервера появится вкладка SQLQuery1.sql, где нужно набрать код новой процедуры, который имеет следующий синтаксис:

CREATE PROCEDURE <Имя процедуры> 
[@<Параметр1> <Тип1>[=<Значение1>], 
@<Параметр2> <Тип2>[=<Значение2>], …]
[WITH ENCRYPTION]
AS <Команды SQL>

Здесь:

  • Имя процедуры - имя создаваемой хранимой процедуры.
  • Параметр1, Параметр2, … - параметры передаваемые в процедуру.
  • Значение1, Значение2, … - значения параметров по умолчанию.
  • Тип1, Тип2, … - типы данных параметров.
  • WITH ENCRYPTION - включает шифрование данных.
  • Команды SQL - SQL запрос, который выполняется при запуске процедур.
  • Замечание: SQL запрос включает в себя параметры, если параметры сравниваются с какими то полями или выражениями, то они должны иметь точно такой же тип данных как эти поля или выражения.

    Замечание: После создания процедура помещается в раздел Stored Procedures текущей БД на панели "Object Explorer". Если дважды щелкнуть по процедуре ЛКМ, то она откроется для редактирования на вкладке "SQLQuery".

    Чтобы посмотреть информацию о хранимой процедуре необходимо выполнить команду:

    EXEC SP_HELPTEXT <Имя процедуры>

    Хранимые процедуры могут быть запущены следующей командой

    EXEC <Имя процедуры> [<Параметр1>, <Параметр2>, …]

    Здесь:

  • <Имя процедуры> - имя выполняемой процедуры.
  • Параметр1, Параметр2, … - значение параметров.
  • Пример: Создание хранимой процедуры, который выводит имя студентов, у которых средний балл больше заданной величины:

    CREATE PROCEDURE СрБАЛЛ
    @X Real
    AS
    SELECT *
    FROM Студенты
    WHERE
    (Оценка1+ Оценка2+ Оценка3)/3>@X

    Команда вызова приведенной выше процедуры выглядит следующим образом:

    EXEC СрБАЛЛ 4

    Команда выводит всех студентов, у которых средний балл больше 4.

    На этом мы заканчиваем рассмотрение хранимых процедур. Дополнительную информацию можно найти в лабораторной работе №5.

    Вернуться к учебному плану