Определение входных и выходных параметров хранимой процедуры.
Определение типа создаваемой хранимой процедуры.
Создание хранимых процедур
Созданию хранимой процедуры предшествует этап предварительной работы, в ходе которой необходимо найти ответы на следующие вопросы:
Помимо тех хранимых процедур, что создает пользователь в контексте собственной базы данных, существует также возможность создавать системные и временные процедуры. С точки зрения написания кода, эти хранимые процедуры мало отличаются друг от друга. Различие заключается в организации способа хранения процедуры. Чтобы создать системную процедуру, необходимо дать ей название, начинающееся с префикса 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.