Подтвердить что ты не робот

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

Я новичок в Scala и Slick и пытаюсь написать простые SQL-запросы с интерполяцией Slick.

Случай 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 и использовать расширенный API Slick в будущем.

4b9b3361

Ответ 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]