[MSSQL] Self-maintaining code approach

hprt

Написал небольшую статью :) http://zenzinov.blogspot.com/2011/12/self-maintaining-code-a...

naska79

Хм, забавно, что-то вроде препроцессора с макросами в С.
Тогда почему не сделать проще:
create procedure test(@param1 int, @param2 int)
as
begin --trywithlog
...
end --trywithlog
где
begin --trywithlog
меняется на
begin
set nocount on;
exec _Context.push @@procid;

declare @trancount int = @@trancount;
declare @options int = @@options;
declare @params xml = (
select
@trancount trancount
, @options options
, @param1 [param1]
, @param2 [param2]
for xml raw, type
);
begin try
и
end --trywithlog
меняется на
end try
begin catch
exec log_error @params = @params;
end catch;
end

hprt

1. Не проще. Сейчас мы точно знаем, что надо менять, в твоем варианте придется вычислять границы. Плюс задача не в том, чтобы поменьше писать, а в том, что есть кусок кода, который сам меняется, т.е. мы ничего не забудем.
В твоем случае, если кто-то, скажем, переменную объявит до begin try - робот кусок кода подменит, а собрать процедуру уже не сможет (а если сможет, то лучше не надо!).
2. Можно, конечно, расширить шаблоны, но тогда мы теряем гибкость. Тот же try/catch, конечно, удобная штука, но есть случаи, когда лучше без них
Оставить комментарий
Имя или ник:
Комментарий: