Я использую существующую хранимую процедуру, которая объявляет эти параметры:
@Unit varchar(4000),
@BegDate datetime,
@EndDate datetime,
@SortBy varchar(20)
Задача, с которой я сейчас сталкиваюсь, состоит в том, чтобы придумать производную эту хранимую процедуру, которая принимает любое количество параметров @Unit, от 1 до N.
Как я могу это сделать? Нужно ли изменить параметр @Unit на @Unit varchar(max), присвоить параметру значения с разделителями, а затем проанализировать значение с разделителями внутри хранимой процедуры?
IOW, мне нужно сделать что-то подобное в хранимой процедуре:
@Unit varchar(max),
@BegDate datetime,
@EndDate datetime,
@SortBy varchar(20)
... это в коде С#:
string unit = unit1 +',' + unit2 +',' + unit3 // and on for however many units are being added
. . .
sqlCommand.Parameters.AddWithValue("@Unit", unit);
... а затем, вернувшись в хранимую процедуру, проанализируйте значения, разделенные запятыми, в массив строк и запросите таблицу следующим образом (псевдо-dml):
string[] unitArray = @Unit.Split(',');
. . .
SELECT BLA, BLEE, BLOO FROM F_BUELLER WHERE Unit in unitArray[0], unitArray[1], unitArray[2], // and on for however many units are being queried for
...или что/как?
ПРИМЕЧАНИЕ. Если бы это был «обычный» проект (то есть не SSRS), я бы просто использовал исходный сохраненный процесс, вызывая его несколько раз и объединяя возвращенные данные, сгруппированные по единицам. Я не знаю, возможно ли это или как это сделать из SSRS в файле rdl/xml...
ОБНОВИТЬ
Что действительно должно произойти здесь, так это то, что после каждой уникальной «Единицы» должен быть разрыв страницы, причина в том, что отчет экспортируется в Excel, а запрашивающая сторона хочет, чтобы каждая Единица была на отдельном листе.
Так что в основном мне нужно вызывать одну и ту же хранимую процедуру N раз, каждый раз выкладывая результаты на свою собственную «страницу».
Итак, совет здесь кажется хорошим («вы можете создать несколько наборов данных в Reporting Services, а затем использовать их в разных элементах отчета. Просто добавьте из набора данных: раскрывающийся список на вкладке данных»)
Однако суть бисквита заключается в следующем: как я могу предоставить 1 и только 1 набор данных для каждой единицы? Невозможно заранее узнать, сколько единиц/листов будет сгенерировано/необходимо; может быть пара, может быть пара десятков.