Программирование на T-SQL. Хранимые процедуры. Создание хранимых процедур. Переменные, параметры и коды возврата

Страницы работы

Содержание работы

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

Хранимая процедура — это одна или несколько инструкций, которым дано имя и которые хранятся в базе данных. Почти любая команда языка Т-SQL может быть включена в хранимую процедуру, что делает процедуры подходящими для приложений и для решения административных задач. 

При первом обращении к хранимой процедуре SQL Server генерирует планы компиляции и выполнения, которые хранятся в кэше запроса и повторно используются последующими выполнениями. 

Следовательно, применяя хранимые процедуры, вы можете получить небольшой выигрыш в производительности, т. к. при последующих выполнениях хранимой процедуры исчезает необходимость в синтаксическом анализе, компиляции и генерации плана запроса.

CREATE { PROC | PROCEDURE }[schema_name.] procedure_name 

      [  { @parameter[ type_schema_name. ] datatype}

         [VARYING][ = default ][OUT | OUTPUT ][READONLY] ][ ,...n] 

      [ WITH<procedure_option>[ ,...n] ]

AS { <sql__statement>[;][ ...n ] | <method_specifier> } [;] 

Если вы хотите изменить содержимое хранимой процедуры или ее параметры, можно применить инструкцию ALTERPROCEDURE.  

От простого пакета на языке T-SQL хранимую процедуру отличают используемые структуры программного кода, такие как переменные, параметры, обработка ошибок и структуры, управляющие ходом выполнения.

2.2.      Переменные, параметры и коды возврата 

Переменные

Переменные обеспечивают манипулирование данными, их хранение и передачу как внутри процедуры, так и между хранимыми процедурами. 

В SQL Server есть два вида переменных: локальные и глобальные. 

Локальная переменная обозначается одним символом "эт" (@), а глобальная переменная — двумя (@@). Кроме того, локальные переменные вы можете создавать, читать и писать в них, а глобальные переменные можно только читать. 

Ниже перечислены некоторые самые популярные глобальные переменные.

Глобальная переменная

Описание

@@ERROR

Код ошибки последней выполненной инструкции

@@IDENTITY

Последнее идентифицирующее значение, вставленное в текущем соединении

@@ROWCOUNT

Количество строк, обработанных последней инструкцией

@@TRANCOUNT

Количество открытых транзакций в текущем соединении

@@VERSION

Версия SQL Server

Локальную переменную можно задать с помощью инструкции DECLARE, в которой указываете имя и тип данных переменной. Одна инструкция DECLARE может использоваться для задания нескольких переменных 

Переменной можно присвоить статическое значение или значение, возвращаемое инструкцией SELECT. Для присваивания значения можно применять инструкцию SET или инструкцию SELECT, но если вы выполняете запрос, для присвоения значения вы должны использовать инструкцию SELECT. Инструкция SELECT также применяется для извлечения значения переменной.

Помимо присваивания значения с помощью инструкций SET или SELECT вы можете также присвоить значение во время объявления переменной.

Пример 2.1.

Примеры задания значений переменных разными способами

                          USE Sale

GO

-- объявление переменных declare @a int=(select max(price) from dbo.product)

 , @b int

 , @c int

 , @d int

-- присвоение при помощи команды select select @b= max(price) from dbo.product -- присвоение при помощи команды set set @c= (select max(price) from dbo.product) set @d=@a + @b

-- вывод значений переменных select @a,@b,@c, @d  Параметры

Параметры — это локальные переменные, применяемые для передачи значений в хранимую процедуру во время ее выполнения. В процессе выполнения любые параметры используются точно так же, как переменные и могут читаться и записываться.  

Пример 2.2.

Объявление параметров

CREATE PROCEDURE Proc1

                                   @parm1 INT

                                   @parm2 VARCHAR(20)= 'Значение по умолчанию' 

AS 

--Блок кода

Можно задавать параметры двух типов: входные и выходные.  

Пример 2.3.

Выходной параметр обозначается ключевым словом OUTPUT

CREATE PROCEDURE Proc2

                                      @parm1 INT

                                    , @parm2 VARCHAR(20)= 'Значение по умолчанию'

                                    , @orderid int OUTPUT 

AS 

--Блок кода

Похожие материалы

Информация о работе