我友好的数据库开发人员给了我一个存储过程,给定一个ID,返回给我一个(并且只有一个)特定格式的数据行,然后返回不同格式的0-n行数据。 / p>
也就是说,第一行将始终包含列a,b和c
然后我可能会收到更多的行,如果我这样做,会有任意数量的行,它们将有d,e,f和g列。
存储过程执行两次SELECT调用来完成此操作。
使用anorm的映射,它使用映射器进行调用并读取数据,用于期望第一行的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; dr:有没有办法在SQL调用返回不同格式的行时解析anorm中返回的行?