update column by it's index
Jun. 12th, 2003 11:32 amгоспода, спасибо всем, кто помог мне по поводу сложного поиска. рискну предложить вашему вниманию ещё одну задачку, которая меня мучает уже несколько дней.
итак, есть некая таблица MyTable на ms sql server. в таблице есть непрерывный ряд полей типа int, например, с 10-го по 20-е поле. и есть ещё одно поле, содержащее индекс поля, которое нужно проапдейтить, причём новое значение поля зависит от старого значения отдельно вычисляемым образом.
единственное решение, которое я нашёл, заключается в написании Get и Set stored procedures, в каждой из которых будет уродливый case. решение, очевидно, плохое, поскольку при изменении имён полей или их порядка всё будет ломаться. есть ли лучшее решение?
итак, есть некая таблица MyTable на ms sql server. в таблице есть непрерывный ряд полей типа int, например, с 10-го по 20-е поле. и есть ещё одно поле, содержащее индекс поля, которое нужно проапдейтить, причём новое значение поля зависит от старого значения отдельно вычисляемым образом.
единственное решение, которое я нашёл, заключается в написании Get и Set stored procedures, в каждой из которых будет уродливый case. решение, очевидно, плохое, поскольку при изменении имён полей или их порядка всё будет ломаться. есть ли лучшее решение?
(no subject)
Date: 2003-06-12 09:12 am (UTC)Ключевое слово: EXECUTE.
(no subject)
(no subject)
Date: 2003-06-12 09:48 am (UTC)(no subject)
Date: 2003-06-12 08:37 pm (UTC)Я, конечно, не доктор..
Date: 2003-06-13 03:45 am (UTC)Re: Я, конечно, не доктор..
Date: 2003-06-13 06:01 am (UTC)http://www.livejournal.com/community/ru_webdev/103125.html?thread=694485
(no subject)
Date: 2003-06-16 01:16 am (UTC)в таблице есть непрерывный ряд полей типа int… и есть ещё одно поле, содержащее индекс поля — предполагаем
mytable.col_Nиmytable.col_indexимя поля уже известно (вытащено с помощью COL_NAME() — предполагаем
function col_name(@col_index integer) returns varchar(255)новое значение поля зависит от старого значения отдельно вычисляемым образом — предполагаем
function updated_col_value_N(@old_col_value_N integer) returns integerПредлагаемый код для обновления одной строки таблицы mytable (в примере она задаётся неприписанным условием where). Если нужно обновить более одной строки, предлагается обновлять их по одной.
declare @sColName varchar(255) declare @nColIndex integer select @nColIndex = col_index from mytable where ... declare @sCmd varchar(255) set @cmd = 'update mytable set ' + col_name(@nColIndex) + '=updated_col_value_' + cast(@nColIndex as varchar(32)) + '(' + col_name(@nColIndex) + ') where ...' execute(@cmd)Re:
Date: 2003-06-16 05:32 am (UTC)(no subject)
Date: 2003-06-16 06:13 am (UTC)