erlang odbc:如何禁用oracle的自动提交

我需要在Linux中使用erlang odbc模块禁用自动提交。 我与代码创build连接:

{ok, Con} = odbc:connect("DSN=MyDSN", [{auto_commit, off}, {scrollable_cursors, off}]). 

连接已成功创build。 当我试图更新表时,请求是成功的,但它是自动提交的。 我究竟做错了什么?

好了朋友们。 我自己解决了这个问题。 正如我在前面的评论中说的那样,问题是Linux的Oracle ODBC驱动程序在创建连接之前在驱动程序初始化期间忽略了设置自动提交模式。 并且在创建连接之后,自动提交模式被正确设置。

我为erlang odbc模块的C源创建了一个修复程序,现在它工作正常。 你可以在这里得到我的补丁Erlang的OTP – https://github.com/RubberCthulhu/erlang-odbc-oracle-fix

更新:这个消息迟来了,但是告诉这里可能是有用的。 我的Oracle ODBC修复已经包含在Erlang / OTP中。 因此,由于R16A的问题不是实际的,如果您需要使用ODBC与Oracle只是尝试最新版本的Erlang / OTP。 R14B04-R15B02的补丁可以在这里找到 – https://github.com/RubberCthulhu/erlang-odbc-oracle-fix

在ODBC中有SQLSetConnectAttr()函数。 它可以与SQL_ATTR_AUTOCOMMITSQL_AUTOCOMMIT_OFF值一起使用。 但我不知道如何从Erlang中调用它。