В реальном мире на Haskell это пример модуля dbase HDBC:
run conn "INSERT INTO test VALUES (?, ?)" [toSql 0, toSql "zero"]
Вопрос: ЗНАЧЕНИЯ (?,?) Кажутся мне плохой практикой, но если я назову столбцы:
run conn "INSERT INTO test VALUES (id, desc)" [toSql 0, toSql "zero"]
Я получаю ошибку:
*** Exception: SqlError {seState = "", seNativeError = 1, seErrorMsg = "prepare 34: INSERT INTO test VALUES (id,desc): no such column: id"}
Странно, поскольку столбцы на самом деле называются id и desc. Апострофы возможно?
run conn "INSERT INTO test VALUES ('id', 'desc')" [toSql 0, toSql "zero"]
Но в результате получается:
*** Exception: SqlError {seState = "", seNativeError = -1, seErrorMsg = "In HDBC execute, received [SqlInt64 3,SqlString \"Newco\"] but expected 0 args."}
Но я действительно ненавижу ставить 20 знаков вопроса. Можете ли вы помочь мне?