sql - 将列表传递给SQL每行调用Groovy

标签 sql grails groovy

我目前正在使用以下命令从数据库呈现sql行列表:

Sql sql = new Sql(dataSource)
def list = []
def index = 0
params.mrnaIds.each { mrnaName ->
   sql.eachRow ("select value from patient_mrna where mrna_id=$mrnaId") { row ->
      list[index] = row.value
      index++
   }
}
render list

但是,我想避免在呈现它们之前将值分配给列表。

变量params.mrnaIds来自多选择输入,因此它可以是单个字符串或包含id的字符串数组。有没有一种方法可以遍历eachRow方法中的这些ID?

我希望能够执行以下操作:
render sql.eachRow ("select value from patient_mrna where mrna_id=?", params.mrnaIds) { row ->
   list[index] = row.value
   index++
}

但是我不能完全确定是否可以使用此功能调用eachRow。如果没有,是否有其他方法可以将结果保存而不存储在列表中?

最佳答案

我认为您可以render每行:

sql.eachRow( someQuery, someParams ){ row ->
  render row as JSON
}

关于sql - 将列表传递给SQL每行调用Groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26489265/

相关文章:

java - Grails save() 尝试在应该更新时创建新对象

gradle - groovy/gradle用于文件收集过滤器和迭代的正确语法是什么?

mysql - 在带有变量的 MySQL 表上触发?

grails - 标准搜索

php - 在准备好的语句中使用变量两次

oracle - 从内存中数据源切换到Oracle数据库时,Grails GORM-ArrayIndexOutOfBoundsException

java - 比较目录中的 jar 证书

java - 在 Spock 测试中使用 @Client 在 Micronaut 中进行 HTTP 分段文件上传

python - BigQuery查询限制上下限

mysql - 如何按日期从2个表中选择数据