Удаление хранимых процедур

Модификация хранимой процедуры

Одним из достоинств хранимых процедур является возможность их многократной модификации без необходимости изменения кода использующих их приложений. Наиболее удобный способ изменения кода хранимой процедуры предоставляет утилита Enterprise Manager. Для этого достаточно дважды щелкнуть на требуемой процедуре и в появившемся окне отредактировать ее код. Когда все изменения будут сделаны, достаточно нажать на кнопку Check Syn­tax и, если проверка синтаксиса пройдет успешно, подтвердить изменения.

Чтобы модифицировать хранимую процедуру только средствами Transact-SQL, используйте следующую команду:

ALTER PROCEDURE] procedure_name [;number]

[ {©parameter data_type } [VARYING] [= default] [OUTPUT] ] [,...n]

[WITH

{ RECOMPILE

| ENCRYPTION

j RECOMPILE. ENCRYPTION} ]

[FOR REPLICATION]

AS

sql_statement [...n]

Параметры этой команды полностью идентичны аналогичным параметрам команды CREATE PROCEDURE. По сути дела, мы просто переопределяем хранимую процедуру. Это равносильно тому, как если бы мы уничтожили хранимую процедуру, а затем создали ее заново. Но, в отличие от подобного подхода, изменение хранимой процедуры посредством команды ALTER PROCEDURE заключается в том, что при этом сохраняются все предоставленные ранее разрешения на использование этой процедуры.

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

Можно удалить хранимую процедуру непосредственно в Enterprise Manager либо воспользоваться следующей командой Transact-SQL:

DROP PROCEDURE {procedure} [,...n]

Процедура будет немедленно удалена. Это означает, что будут удалены запись о ее имени из таблицы sysobjects и текст кода процедуры из таблицы syscomments.

Удаление расширенных хранимых процедур происходит другим образом. В Enterprise Manager выберите системную базу данных master и перейдите к объекту Extended Stored Procedure. В контекстном меню требуемой расширенной хранимой процедуры выберите пункт Delete. Необходимо будет подтвердить свою готовность удалить данную процедуру, поэтому нажмите кнопку Drop All. Удалить расширенную хранимую процедуру средствами Transact-SQL можно следующим образом:

spjjropextendedproc [@functname =] 'procedure'

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


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



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