Как писать динамические 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]