Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00

Лекция 21: Создание хранимых процедур и управление этими процедурами

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

В этом разделе мы рассмотрим три метода создания хранимой процедуры: использование оператора T-SQL CREATE PROCEDURE, использование Enterprise Manager и использование мастера Create Stored Procedure Wizard. Независимо от выбранного метода не забывайте тестировать каждую процедуру, выполняя при необходимости последующее редактирование, пока она не будет работать должным образом.

Использование оператора CREATE PROCEDURE

Оператор CREATE PROCEDURE имеет следующий синтаксис:

CREATE PROC[EDURE]   имя_процедуры
                             [ {@имя_параметра тип_данных} ] [= по_умолчанию][OUTPUT]
                             [,...,n]
AS оператор(ы)_t-sql

Создадим какую-либо простую хранимую процедуру. Эта процедура будет выбирать (и возвращать) три колонки данных для каждой строки таблицы Orders, в которой дата колонки ShippedDate больше даты колонки RequiredDate. Отметим, что хранимая процедура может быть создана только в текущей базе данных, к которой осуществляется доступ, поэтому сначала следует указать эту базу данных с помощью оператора USE. Прежде чем создать эту процедуру, мы выясним также, существует ли хранимая процедура с именем, которое мы хотим использовать. Если она существует, то мы удалим ее, и затем создадим новую процедуру с этим именем. Ниже показан набор T-SQL, используемый для создания этой процедуры:

USE Northwind
GO

IF EXISTS   (SELECT     name
                 FROM       sysobjects
                 WHERE      name = "LateShipments" AND
                              type = "P")
DROP PROCEDURE LateShipments
GO

CREATE PROCEDURE LateShipments
AS
SELECT   RequiredDate,
           ShippedDate,
           Shippers.CompanyName
FROM     Orders, Shippers
WHERE    ShippedDate    > RequiredDate AND
           Orders.ShipVia = Shippers.ShipperID
GO

Если запустить данный набор, то будет создана хранимая процедура. Для запуска хранимой процедуры просто обратитесь к ней по имени, как это показано ниже:

LateShipments
GO

Процедура LateShipments возвратит 37 строк данных.

Если оператор, вызывающий данную процедуру, входит в пакет операторов и не является первым оператором этого пакета, то вы должны использовать вместе с вызовом процедуры ключевое слово EXECUTE (сокращается до "EXEC"), как это показано в следующем примере:

SELECT getdate()
EXECUTE LateShipments
GO

Вы можете использовать ключевое слово EXECUTE, даже если процедура выполняется как первый оператор в пакете или является единственным оператором, который у вас выполняется.