mysql_real_escape_string / Говнокод #6111 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 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, который, в свою очередь, формирует строку для записи изменений таблицы в лог.

Запостил: alter_reserved alter_reserved, (Updated )

Комментарии (8) RSS

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8