首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pgocaml自定义sql查询

Pgocaml自定义sql查询
EN

Stack Overflow用户
提问于 2013-08-13 14:50:03
回答 1查看 220关注 0票数 1

我正在尝试编写一个简单地删除表的查询。

代码语言:javascript
复制
  let drop_table dbh table_name =
    let query = String.concat " " ["drop table"; table_name] in
    PGSQL(dbh) query

我从查询中收到以下错误

代码语言:javascript
复制
File "save.ml", line 37, characters 10-11:
Parse error: STRING _ expected after ")" (in [expr])
File "save.ml", line 1:
Error: Preprocessor error

我为什么要犯这个错误?该函数似乎是有效的Ocaml语法。

谢谢你们!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-13 15:09:51

当使用PG‘’OCaml的语法扩展时,不能构造query。您必须提供一个文字字符串。这是获得PG‘’Ocaml编译时查询验证的折衷方法。如果query可以是任何OCaml表达式,PG'OCaml将不知道如何在编译时验证它。

就我个人而言,我已经完全停止使用语法扩展了。我的感觉是,它不会扩大到大型项目。相反,我直接调用prepareexecute。例如,该函数将创建一个新的数据库连接(假设先前定义了连接参数),运行给定的查询,并关闭连接:

代码语言:javascript
复制
let exec query =
  let db = PGOCaml.connect ~host ~user ~database ~port ~password ()  
  PGOCaml.prepare db ~query ();  
  let ans = PGOCaml.execute db ~params:[] () in  
  PGOCaml.close db;  
  ans

当然,这不是一个健壮的实现,不应该在生产代码中使用。它不处理错误,也不是异步的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18212342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档