I am new to Scala and Slick and trying to write a plain SQL queries with Slick interpolation.
Case 1: I want the generalize the code so that queries are stored as constants.
for instance:
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""";
And create plain query from constant something like
var plainQuery = sql"""$SQL_ALL_TABLE_METADATA""".as[List[String]]
Case 2: Replace a part of the query
For instance: get information on column f_name from table 'table1'
var column= "f_name"
var plainQuery = sql"""SELECT $column FROM table1""".as[String]
When I try the above cases it is not working as it looks like query is binding statically on compile time.
Please note that as of now I want to use plain SQL and use advanced Slick API in future.
Dynamic SQL queries are those built at runtime based on one or more variable values. To execute those queries, we must concatenate them into one SQL statement and pass them as a parameter to the sp_executesql stored procedure.
What are the three ways that Dynamic SQL can be executed? Writing a query with parameters. Using EXEC. Using sp_executesql.
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]]
Use #$
instead of $
var column= "f_name"
var plainQuery = sql"""SELECT #$column FROM table1""".as[String]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With