русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-09; просмотров: 694; Нарушение авторских прав


Как и большинство объектов баз данных SQL Server, хранимую процедуру можно создать тремя способами:

- с помощью средств Transact-SQL;

- с помощью Enterprise Manager;

- с помощью мастера Create Stored Procedure Wizard.

Мы будем рассматривать создание хранимых процедур только средствами Transact-SQL, точнее, с помощью команды CREATE PROCEDURE. Рассмотрим синтаксис этой команды:

CREATE PROCEDURE procedure_name [ : number ]

[ { @parameter data_type }

[ VARYING ] [ = default ] [.OUTPUT ]

WITH

{ RECOMPILE|ENCRYPTION|RECOMPILE . ENCRYPTION } ]

[ FOR REPLICATION ]

AS

sql_statement.

Указание только префикса sp_ еще не делает процедуру системной. Чтобы быть тако­вой, она должна быть размещена в системной базе данных master. После этого ее мож­но будет использовать в контексте любой базы данных, не указывая полного имени.

Рассмотрим параметры, используемые при создании хранимой процедуры.

- procedure_name – имя создаваемой процедуры. Используя префиксы sp_, # и ##, можно определить создаваемую процедуру соответственно как системную или временную. Как видно из синтаксиса команды, не допускается указывать имя владельца, которому будет принадлежать создаваемая процедура, а также имя базы данных, в которой должна быть размещена процедура. Таким образом, чтобы разместить создаваемую хранимую процедуру в конкретной базе дан­ных, необходимо выполнять команду CREATE PROCEDURE в контексте этой базы данных. Напомним, что переключить текущую базу данных можно с помо­щью команды USE.

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



- number – идентификационный номер хранимой процедуры, однозначно опре­деляющий ее в группе процедур.

- @parameter – имя параметра, который будет использоваться создаваемой хра­нимой процедурой для передачи входных или выходных данных. Как и при работе с локальными переменными, имена параметров хранимой процедуры должны начинаться с символа @. В одной хранимой процедуре можно исполь­зовать множество параметров (до 1024). Для этого достаточно разделить их запятыми. Параметры, определяемые при создании хранимой процедуры, являются своего рода локальными переменными, поэтому различные хранимые процедуры могут иметь абсо­лютно идентичные параметры. Однако, в хранимой процедуре не разре­шается использование переменных с именами, совпадающими с именами параметров.

- data_type – тип данных, который будет иметь соответствующий параметр хра­нимой процедуры. Для определения параметров можно использовать любые типы данных SQL Server, включая text, ntext и image, а также пользователь­ские типы данных.

- OUTPUT – наличие этого ключевого слова будет означать, что соответствующий параметр предназначается для возвращения данных из хранимой процедуры. Однако это вовсе не означает, что параметр не может быть использован для передачи значений в хранимую процедуру. Указание ключевого слова OUTPUT предписывает серверу при выходе из хранимой процедуры присвоить теку­щее значение параметра локальной переменной, которая была указана при вызове процедуры в качестве значения параметра. Отметим, что при наличии ключевого слова OUTPUT значение соответствующего параметра при вызове про­цедуры может быть задано только с помощью локальной переменной. Не раз­решается использование любых выражений или констант, допустимое для обычных параметров.

- VARYING – ключевое слово, которое используется совместно с параметром OUTPUT, имеющим тип данных cursor. Ключевое слово VARYING определяет, что в качестве выходного параметра будет представлено результирующее множество.

- default – значение, которое будет принимать соответствующий параметр по умолчанию. Таким образом, при вызове процедуры можно будет не указывать явно значение соответствующего параметра. В этом случае будет использовано значение, заданное с помощью параметра default.

- RECOMPILE – как мы говорили в начале урока, сервер кэширует план исполнения запроса и компилированный код. Так что при последующем вызове процедуры будут использоваться уже готовые значения. Однако в некоторых случаях все же требуется выполнять перекомпиляцию кода процедуры. Указание данного ключевого слова предписывает системе создавать план выполнения хранимой процедуры при каждом ее вызове.

- FOR REPLICATION – это ключевое слово используется при репликации данных и включении создаваемой хранимой процедуры в качестве статьи в публикацию. Когда процедура, созданная с параметром FOR REPLICATION, копируется механизмами репликации на подписчиков, она не может быть выполнена стандартными средствами. Ее вызов осуществляется только подсистемой репликации. Параметр FOR REPLICATION не может быть использован совместно с параметром RECOMPILE.

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

- AS – это ключевое слово свидетельствует о начале собственно тела хранимой процедуры, то есть набора команд Transact-SQL, с помощью которых и будет реализовываться то или иное действие. В теле процедуры могут использоваться практически все команды Transact-SQL, объявляться транзакции, устанавливаться блокировки и производиться вызовы других хранимых процедур. Для выхода из хранимой процедуры можно использовать команду RETURN.

Рассмотрим пример создания хранимой процедуры, возвращающей в переменной @i среднюю длину имени студента:

Пример 4.

CREATE PROCEDURE SimpleMine1

AS

SELECT StName, StSurname, Birth from Grooup

Это пример простой хранимой процедуры.

Пример 5.

CREATE PROCEDURE SimpleMine2

@x char(50)= ‘Вася’

AS

SELECT StName, StSurname FROM GROOUP

WHERE StName=@x.

Это пример хранимой процедуры со значением по умолчанию.

 

Пример 6.

CREATE PROCEDURE SimpleMine3

@x char(50)

AS

SELECT StName, StSurname FROM GROOUP

WHERE StName=@x.

Создаем хранимую процедуру с входным параметром.

 

Пример 7.

CREATE PROCEDURE SimpleMine4

@x char(50)output

AS

set @x='МИРУ МИР'.

Создаем хранимую процедуру с выходным параметром.

Пример 8.

CREATE PROCEDURE ErrorSP

AS

DECLARE @returnCode int

SELECT StName,StSurname from Grooup

SET @returnCode=@@ERROR

RETURN(@returnCode).



<== предыдущая лекция | следующая лекция ==>
Разработка хранимых процедур | Вызов хранимой процедуры


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.741 сек.