Разработка кода хранимой процедуры

Определение входных и выходных параметров хранимой процедуры.

Определение типа создаваемой хранимой процедуры.

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

Созданию хранимой процедуры предшествует этап предварительной работы, в ходе которой необходимо найти ответы на следующие вопросы:

Помимо тех хра­нимых процедур, что создает пользователь в контексте собственной базы данных, существует также возможность создавать системные и временные процедуры. С точки зрения написания кода, эти хранимые процедуры мало отличаются друг от друга. Различие заключается в организации спо­соба хранения процедуры. Чтобы создать системную процедуру, необходи­мо дать ей название, начинающееся с префикса sp_, и сохранить ее в сис­темной базе данных master. Временные хранимые процедуры доступны пользователям в течение того времени, пока активно соединение, в кон­тексте которого эта процедура была создана. SQL Server позволяет созда­вать как локальные, так и глобальные временные процедуры, которые хра­нятся в базе данных tempdb. Локальные временные хранимые процедуры доступны только пользователю, работающему в контексте соединения, по­родившего данную процедуру. При определении хранимой процедуры та­кого типа необходимо дать ей имя, начинающееся с символа #. Глобальные временные хранимые процедуры доступны пользователям из любых сое­динений данного сервера. Имя глобальной временной процедуры начина­ется с символов ##.

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

Код процедуры может содержать последовательность любых команд Transact-SQL, включая вызов других хранимых процедур. Необходимо, однако, чтобы код реализовывал логи­чески законченное действие. Требуется очень серьезно подойти к написа­нию кода процедуры, поскольку плохо написанная хранимая процедура может существенным образом снизить эффективность системы, особенно если ею пользуется множество пользователей. Лучше всего предваритель­но протестировать код процедуры в Query Analyzer с использованием та­кого средства мониторинга, как SQL Server Profiler. Вместе эти утилиты предоставляют уникальные возможности для отладки запросов.

Включение создаваемой процедуры в группу.

Для удобства управления процедурами вы можете группировать логически однотипные хранимые процедуры. Для этого всем процедурам группы при создании дают одина­ковые имена. Однако при этом им присваивают различные идентификаци­онные номера. Таким образом, получается несколько хранимых процедур, которые обозначаются следующим образом:

< имя_процедуры>;<идентификаци-онный_номер>. Ссылка на группу осуществляется по имени процедур. На­пример, в группе процедур #proced отдельные хранимые процедуры могут иметь имена #proced;l, #proced;2 и т. д. Достоинство такого подхода за­ключается в том, что вы можете одновременно управлять сразу всей груп­пой процедур. При этом, например, можно удалить сразу все процедуры, входящие в состав группы.

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

1) используя утилиту Enterprise Manager;

2) прибегнув к помощи мастера Create Stored Procedure Wizard;

3)воспользовавшись средствами, предоставляемыми Transact-SQL.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: