Как писать динамические SQL-запросы с интерполяцией sql"" " в slick

Я новичок в Scala и 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]]

случай 2: Заменить часть запроса

например: получить информацию о столбце f_name из таблицы "table1"

var column= "f_name"
var plainQuery = sql"""SELECT $column FROM table1""".as[String]

когда я пытаюсь в приведенных выше случаях он не работает, поскольку похоже, что запрос привязывается статически во время компиляции.

обратите внимание, что на данный момент я хочу использовать простой SQL и использовать advanced Slick API в будущем.

1 ответов


корпус 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

использовать #$ вместо $

var column= "f_name"
var plainQuery = sql"""SELECT #$column FROM table1""".as[String]