На заметку! Версия SQL Server 7 (и последующие версии) предварительно компилируют все команды SQL, включая неподготовленные. Это значит, что вы используете преимущества компиляции независимо от того, используете хранимые процедуры или нет. Однако хранимые процедуры все равно имеют тенденцию повышать производительность, поскольку снижают вариантность SQL-операторов, таким образом, гарантируя, что один скомпилированный план выполнения может использоваться более часто и более аффективно. К тому же, поскольку код базы данных хранится в самой базе, а не на стороне клиента, администратору базы легче выполнить тонкую настройку индексов и блокировок, чтобы задействовать другие стратегии оптимизации.
Рассмотрим пример SQL-кода, необходимого для создания хранимой
процедуры для вставки отдельной записи в таблицу Employees. Этой хранимой процедуры
изначально нет в базе данных Northwind, поэтому вам придется добавить ее туда
(с помощью такого инструмента, как Enterprise Manager или Query Analyzer),
прежде чем использовать.
CREATE PROCEDURE InsertEmployee
@TitleOfCourtesy varchar(25),
@LastName varchar(20),
@FirstName varchar(10),
@EmployeeID int OUTPUT
AS
INSERT INTO Employees
(TitleOfCourtesy, LastName, FirstName, HireDate)
VALUES (@TitleOfCourtesy, @LastName, @FirstName, GETDATE());
SET @EmployeeID = @@IDENTITY
GO
Хранимая процедура принимает три параметра — титул для вежливого обращения, фамилию и имя. Возвращает она идентификатор (ID) вновь созданной записи через выходной параметр @EmployeeID, который извлекается после оператора INSERT посредством функции @@IDENTITY. Это — один из примеров простых задач, которые хранимая процедура может дополнительно упростить. Без использования хранимой процедуры было бы довольно неудобно получить автоматически сгенерированное идентифицирующее значение только что вставленной новой записи.
Далее вы можете создать команду SqlCommand для создания оболочки вызова хранимой процедуры. Эта команда принимает те же три параметра на входе и использует @@IDENTITY для получения и возврата идентификатора новой записи. Вот первый шаг, который создает необходимые объекты и устанавливает InsertEmployee в качестве текста команды:
предыдущая следующая страница оглавление
322