Передача коллекции данных во встроенную процедуру

Posted: Сентябрь 3, 2012 in .NET, TSQL
Метки: ,

У Дениса Гладких есть хорошая статья о том как передать список/коллекцию/множество в хранимую процедуру. Автор приводит три способа:

Решение 1. Строка – список значений, разделенных запятой
Решение 2. BULK INSERT
Решение 3. Table-Valued Parameters (Database Engine)

У нас в проекте использует еще одно решение… Если у вас на форме есть немного чекбоксов с выбором, то можно это все представить как число в двоичном счислении и завернуть в одну цифры в десятичном.

Пример: пусть у нас есть 5 чекбоксов с какими-то выборами (ClosedCheck, NotWorkCheck, TooSmallCheck, OthersCheck, LargeTo5CheckBox). Представим это все как одно число

int indicatorFlag = (ClosedCheck.Checked ? 1 : 0) + (NotWorkCheck.Checked ? 2 : 0) + (TooSmallCheck.Checked ? 4 : 0) + (OthersCheck.Checked ? 8 : 0) + (LargeTo5CheckBox.Checked ? 16 : 0);
cmd.Parameters.AddWithValue("@Indicator_Flag", indicatorFlag);

Со стороны встроенной процедуры имеем

@Indicator_Flag tinyint = 15 -- по умолчанию все единицы

А обращаться к отдельным битам нужно вот так

@Indicator_Flag&1 != 0
@Indicator_Flag&16 != 0

Вот такой вот способ. Похоже на стиль из олимпиадного программирования:)

Реклама

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

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s