Иногда после изменений структуры таблиц БД приходится вносить соответствующие изменения в хранимые процедуры, при этом всегда можно забыть что-либо забыть. Узнаете об этом вы только после того, как вызовете данную хранимую процедуру. Для проверки того, что все хранимые процедуры после изменений будут, как минимум, запускаться можно использовать следующий трюк - выполнение перекомпилляции всех имеющихся хранимых процедур. Для этого ниже приведен код хранимой процедуры под MS SQL Server, если какая-то процедур на сможет быть перекомпиллирована будет выдано сообщение об ошибке:
CREATE PROCEDURE p_RecompileAllStoredProcedures ( @Verbose bit = 0 ) AS BEGIN DECLARE @SQL NVARCHAR(MAX) DECLARE @ProcedureName NVARCHAR(255) DECLARE Procedures CURSOR FOR SELECT NAME, OBJECT_DEFINITION(o.object_id) FROM sys.objects AS o WHERE o.[type] = 'P' AND o.name <> 'p_Kladr_Upgrade' ORDER BY o.name OPEN Procedures FETCH NEXT FROM Procedures INTO @ProcedureName, @SQL WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL = 'ALTER ' + RIGHT(@SQL, LEN(@SQL) - (CHARINDEX('CREATE', @SQL) + 6)) IF @Verbose <> 0 PRINT @ProcedureName EXEC(@SQL) FETCH NEXT FROM Procedures INTO @ProcedureName, @SQL END CLOSE Procedures DEALLOCATE Procedures END
Комментариев нет:
Отправить комментарий