Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pgocaml自定义sql查询_Ocaml - Fatal编程技术网

Pgocaml自定义sql查询

Pgocaml自定义sql查询,ocaml,Ocaml,我正在尝试编写一个只删除一个表的查询 let drop_table dbh table_name = let query = String.concat " " ["drop table"; table_name] in PGSQL(dbh) query 我从查询中收到以下错误 File "save.ml", line 37, characters 10-11: Parse error: STRING _ expected after ")" (in [expr]) Fil

我正在尝试编写一个只删除一个表的查询

  let drop_table dbh table_name =
    let query = String.concat " " ["drop table"; table_name] in
    PGSQL(dbh) query
我从查询中收到以下错误

File "save.ml", line 37, characters 10-11:
Parse error: STRING _ expected after ")" (in [expr])
File "save.ml", line 1:
Error: Preprocessor error
为什么我会犯这个错误?该函数似乎是有效的Ocaml语法


谢谢大家

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

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

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

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

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

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

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

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

您能给我一个您正在使用的查询示例,然后告诉我如何编译它吗?在我提出的问题的背景下,这将是惊人的!你能给我一个你正在使用的查询的例子,然后你是如何编译它的?在我提出的问题的背景下,这将是惊人的!