Хранимая процедура— это оператор SQL (или набор операторов), которые откомпилированы и хранятся в базе данных. Для SQL Server хранимые процедуры состоят из Тсода на языке Transact-SQL (T-SQL), причем они могут содержать многие языковые конструкции, которые обычно не встречаются в типичных запросах. Например, в хранимой процедуре вы можете реализовать процедуры обработки ошибок и даже вызывать функции операционной системы при помощи так называемых "расширенных" хранимых процедур.
Для заданной базы данных щелкните правой кнопкой мыши по каталогу хранимых процедур в Server Explorer и выберите пункт Add New Stored Procedure. В редакторе SQL Editor откроется шаблон для хранимой процедуры. Редактор SQL Editor является близким родственником редактора кода Visual Studio; несмотря на то, что в нем нет технологии IntelliSense, он поддерживает синтаксическое раскрашивание, точки останова, а также обычные функции редактирования текста (вырезать-скопировать-вставить, перенос слов и т. д.).
На рис. 18.17 показано начало создания хранимой процедуры в окне редактора SQL Editor.
Рис. 18.17. Начало создания новой хранимой процедуры
При наличии загруженного в SQL Editor шаблона написание хранимой процедуры сводится к вводу строк кода и SQL, которые будут выполнять требуемые действия. Но разработчики хранимых процедур не были оставлены без поддержки со стороны Visual Studio. Вы можете использовать мощь визуального конструктора Query/View для написания некоторых частей ваших хранимых процедур.
Использование редактора SQL Editor и конструктора Query/View
По мере создания тела процедуры окно редактора будет выделять и заключать в рамку определенные части процедуры. Эти части в рамке представляют собой операторы SQL, которые можно редактировать при помощи Query Designer. Рассмотрим хранимую процедуру на рис. 18.18.
Данная процедура (из базы данных AdventureWorks) по существу состоит из двух запросов обновления. Оба они выделены синей рамкой в окне редактора SQL Editor. Таким образом, редактор указывает, что он распознал в процедуре оператор SQL, который можно конструировать при помощи конструктора Query/View. Если вы щелкнете правой кнопкой мыши внутри рамки, то в контекстном меню вы увидите пункт Design SQL Block. Если вы его выберете, то в отдельном диалоговом окне откроется конструктор Query/View.
На рис. 18.19 показан первый из двух операторов обновления. Используя тот же самый процесс для написания запросов (который уже был описан ранее), вы можете создать SQL, пользуясь роскошью перетаскивания в конструкторе Query/View. Нажатие ОК в диалоговом окне конструктора сохранит запрос в хранимой процедуре (при этом обновится код в окне редактора).
Обратите внимание, что конструктор Query Designer полностью поддерживает использование параметров. Когда вы заполните имена параметров в столбце New Value (см. панель критериев на рис. 18.19), то конструктор сможет создать соответствующий SQL-оператор.
Примечание
Возможность создавать и редактировать хранимые процедуры поддерживается только для Microsoft SQL Server. Например, вы не можете использовать инструменты Visual Studio для создания процедуры в базе данных Oracle.
Конструктор Query Designer можно также использовать для вставки новых блоков SQL в хранимую процедуру (а не только для редактирования уже существующих операторов SQL). Сначала в окне SQL Editor надо щелкнуть правой кнопкой мыши по той строке процедуры, в которой вы хотите разместить новый запрос. В появившемся меню надо выбрать пункт Insert SQL. Теперь для создания соответствующего SQL-кода можно использовать конструктор Query/View. После того как нажатием ОК вы закроете диалоговое окно, новый SQL- оператор будет вставлен в процедуру и может быть сохранен в базе данных.