Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как бы так в процедуре передать название поле в качестве аргумента?  [new]
Nika gnome
Member

Откуда:
Сообщений: 626
Таблица:
Select userID, name, surname, aaaa, bbbb, cccc 
from MyTable

Могу создать процедуру, которая бы обновляла (update) конкретное поле у конкретной строки (userID = @ID)

update MyTable
set name = @name
where userID = @ID

Но возможно ли добавить третью переменную, которая бы текстом содержала бы название поля, которое я хочу обновить? Типа того:
update MyTable
set @field = @name
where userID = @ID


пока пытаюсь как-то выкрутиться через системные таблицы
14 ноя 14, 16:44    [16847781]     Ответить | Цитировать Сообщить модератору
 Re: Как бы так в процедуре передать название поле в качестве аргумента?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Nika gnome,

DSQL +INFORMATION_SCHEMA.COLUMNS - тока от лукавого все ето
14 ноя 14, 16:45    [16847792]     Ответить | Цитировать Сообщить модератору
 Re: Как бы так в процедуре передать название поле в качестве аргумента?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
Это зачем такие ужасы?
14 ноя 14, 16:51    [16847835]     Ответить | Цитировать Сообщить модератору
 Re: Как бы так в процедуре передать название поле в качестве аргумента?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Сделайте по-нормальному и обновляйте любое поле или их комбинацию.

create procedure (
  @id          type
  , @name      type = null
  , @surname   type = null
  , @aaaa      type = null
  , @bbbb      type = null
  , @cccc      type = null
)
as begin
  update a set
    name       = isnull(@name, a.name )
    , surname  = isnull(@surname , a.surname )
    , aaaa     = isnull(@aaaa , a.aaaa )
    , bbbb     = isnull(@bbbb , a.bbbb )
    , cccc     = isnull(@cccc , a.cccc )
  from MyTable a
  where
    a.UserId = @Id
end
14 ноя 14, 16:53    [16847851]     Ответить | Цитировать Сообщить модератору
 Re: Как бы так в процедуре передать название поле в качестве аргумента?  [new]
правильный проходящий.
Guest
Владислав Колосов
Это зачем такие ужасы?
Очередной писатель универсальной процедуры для сохранения одного! значения в любое поле, передаваемое параметром. Как всегда, надеющийся, что он придумал оригинальное решение.
14 ноя 14, 16:55    [16847859]     Ответить | Цитировать Сообщить модератору
 Re: Как бы так в процедуре передать название поле в качестве аргумента?  [new]
Nika gnome
Member

Откуда:
Сообщений: 626
Гавриленко Сергей Алексеевич,

да, спасибо, думаю, это лучшее решение
14 ноя 14, 18:44    [16848355]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить