- 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, который, в свою очередь, формирует строку для записи изменений таблицы в лог.
Мистер Хэнки 29.03.2011 15:52 # +1
eth0 29.03.2011 18:32 # +1
Lure Of Chaos 29.03.2011 23:29 # 0
Vasiliy 30.03.2011 10:33 # 0
glilya 31.03.2011 07:39 # 0
Vasiliy 03.04.2011 10:19 # −1
eth0 03.04.2011 10:36 # 0
daymansiege 19.04.2011 00:28 # +1