Мой дружественный разработчик БД предоставил мне хранимую процедуру, которая, учитывая ID, возвращает мне одну (и только одну) строку данных определенного формата, а затем 0-n строк данных в другом формате.Могу ли я использовать анорму для вызова хранимой процедуры MySQL, которая возвращает два набора строк?
То есть, первая строка всегда будет содержать столбцы а, Ь и с
Тогда я, возможно, получить больше строк назад, и если я делаю, там будет любое число из них, и они будут иметь столбцы d, e, f и g.
Для выполнения этой процедуры хранимые процедуры выполняют два вызова SELECT.
Используя сопоставление для анома, он выполняет вызов и считывает данные с помощью сопоставителя для класса case, который ожидает первую строку, но затем я теряюсь. Я не вижу способа сказать аноним: «Эй, может быть, больше данных, и если да, то для этого есть класс картографа и случая ...»
Возможно ли это?
Вот мой код, который делает вызов:
def sproc[P](name: String, params: Any*)(parser: RowParser[P]) = {
DB.withConnection {
implicit connection: Connection =>
val query = createSprocString(name, params.length)
val mapped = (for ((p, i) <- params.view.zipWithIndex) yield s"p$i" -> toParameterValue(p)).toArray
SQL(query)
.on(mapped: _*)
.parse(parser *)
}
}
и я называю это константой выглядит (StuffDTO.parse возвращенного отображения синтаксического анализа):
sproc("SPThatGetsStuffBasedOnAnID", parameters: _*)(StuffDTO.parse)
Tl; др: есть способ проанализировать возвращенные строки в анормах, когда SQL-вызов возвращает строки разных форматов?