我是 Scala 和 Slick 的新手,并试图用 Slick 插值编写一个普通的 SQL 查询。
情况1:
我想要概括代码,以便将查询存储为常量。
例如:
val SQL_ALL_TABLE_METADATA: String = """SELECT DISTINCT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'apollo' OR table_schema = 'dpa' ORDER BY table_name""";
并从常量创建普通查询,例如
var plainQuery = sql"""$SQL_ALL_TABLE_METADATA""".as[List[String]]
案例二:
替换查询的一部分
例如:从表 'table1' 中获取列 f_name 的信息
var column= "f_name"
var plainQuery = sql"""SELECT $column FROM table1""".as[String]
当我尝试上述情况时,它不起作用,因为查询似乎在编译时静态绑定(bind)。
请注意,现在我想使用纯 SQL 并在将来使用高级 Slick API。
最佳答案
情况1
为什么不简单地拥有这个?
val SQL_ALL_TABLE_METADATA: StaticQuery = sql"""SELECT DISTINCT table_name, column_name, data_type
FROM information_schema.columns
WHERE table_schema = 'apollo' OR table_schema = 'dpa' ORDER BY table_name"""
var plainQuery = SQL_ALL_TABLE_METADATA.as[List[String]]
案例2
Use
#$
instead of $
var column= "f_name"
var plainQuery = sql"""SELECT #$column FROM table1""".as[String]
关于scala - 如何在 slick 中使用 sql """插值编写动态 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27329185/