- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
SET @SQL = '
SELECT
@diff1 = @diff1 + ''CASE WHEN '' + Field_Name + ''=@'' + Field_Name +
'' OR ('' + Field_Name + '' IS null AND @'' + Field_Name + '' IS NULL) THEN ''''''''
ELSE '''''' + Field_Name + ''="''''+COALESCE(CAST('' + Field_Name + '' AS varchar(max)), ''''NULL'''')
+ ''''", '''' END +'',
@diff2 = @diff2 + ''CASE WHEN '' + Field_Name + ''=@'' + Field_Name +
'' OR ('' + Field_Name + '' IS Null AND @'' + Field_Name + '' IS NULL) THEN ''''''''
ELSE '''''' + Field_Name + ''="''''+COALESCE(CAST(@'' + Field_Name + '' AS varchar(max)), ''''NULL'''')
+ ''''", '''' END +'',
@declare = @declare + ''DECLARE @'' + Field_Name + '' '' + Field_Type + '';'',
@set = @set + ''SET @'' + Field_Name + ''='' + Field_Value + '';''
FROM (' + @pre + ') AS t'
Моё. Кусочек небольшой хранимки в 700 строк.
Формирование SQL-a, который формирует SQL, который, в свою очередь, формирует строку для записи изменений таблицы в лог.
Комментарии (8) RSS
Добавить комментарий