How to write dynamic SQL queries with sql""" interpolation in slick
I'm posting answer which is not using interpolation, maybe someone find it helpful.
I solved it that way in tests, executeUpdate method return actual result of query. I was able to have dynamic query from String variable.
dbConnection = JdbcBackend.Database.forURL(url = dbConfig.getString("db.url"), driver = "org.h2.Driver")
val createTablesSqlQuery:String = //read_from_file
dbConnection.createSession().createStatement().executeUpdate(createTablesSqlQuery)
Helpful topic was this one: https://groups.google.com/forum/#!topic/scalaquery/OxAgtcCPMyg
Case 1
Why not simply have this?
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]]
Case 2
Use #$
instead of $
var column= "f_name"
var plainQuery = sql"""SELECT #$column FROM table1""".as[String]