Хранимые процедуры

Написание функций и хранимых процедур в SQL Server

Meghan Kwartler

IT Consultant

Что такое хранимая процедура?

Что это?

Процедуры, которые

  • Принимают входные параметры
  • Выполняют действия (EXECUTE SELECT, INSERT, UPDATE, DELETE и другие операторы SP)
  • Возвращают статус (успех или ошибка)
  • Возвращают выходные параметры
Написание функций и хранимых процедур в SQL Server

Зачем использовать хранимые процедуры?

Зачем?

  • Сокращают время выполнения
  • Снижают сетевой трафик
  • Обеспечивают модульное программирование
  • Повышают безопасность
Написание функций и хранимых процедур в SQL Server

В чём разница?

UDF

  • Обязаны возвращать значение
    • Допускается табличное значение
  • Встроенный SELECT разрешён
  • Нет выходных параметров
  • Нет INSERT, UPDATE, DELETE
  • Не могут вызывать SP
  • Нет обработки ошибок

SP

  • Возвращаемое значение не обязательно
    • Табличное значение недопустимо
  • Нельзя встраивать в SELECT
  • Возвращают выходные параметры и статус
  • INSERT, UPDATE, DELETE разрешены
  • Могут вызывать функции и SP
  • Обработка ошибок через TRY...CATCH
Написание функций и хранимых процедур в SQL Server

CREATE PROCEDURE с выходным параметром

-- First four lines of code
-- SP name must be unique 
CREATE PROCEDURE dbo.cuspGetRideHrsOneDay 
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
.......
Написание функций и хранимых процедур в SQL Server

CREATE PROCEDURE с выходным параметром

CREATE PROCEDURE dbo.cuspGetRideHrsOneDay
    @DateParm date,
    @RideHrsOut numeric OUTPUT
AS
SET NOCOUNT ON
BEGIN
SELECT 
  @RideHrsOut = SUM(
    DATEDIFF(second, PickupDate, DropoffDate)
  )/ 3600
FROM YellowTripData
WHERE CONVERT(date, PickupDate) = @DateParm
RETURN
END;
Написание функций и хранимых процедур в SQL Server

Выходные параметры и возвращаемые значения

Выходные параметры

  • Могут быть любого типа данных
  • Допускается несколько на одну SP
  • Не могут быть табличными параметрами

Возвращаемое значение

  • Указывает на успех или ошибку
  • Только тип данных integer
  • 0 — успех, ненулевое значение — ошибка
Написание функций и хранимых процедур в SQL Server

Вы готовы создавать хранимые процедуры!

Написание функций и хранимых процедур в SQL Server

Preparing Video For Download...