5

Linuxでerlangodbcモジュールを使用してOracleの自動コミットを無効にする必要があります。私はコードとの接続を作成しました:

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

接続が正常に作成されました。テーブルを更新しようとすると、リクエストは成功しますが、自動的にコミットされます。私は何が間違っているのですか?

4

2 に答える 2

3

わかりました、皆さん。私は自分で問題を解決しました。以前のコメントで述べたように、問題は、Linux 用の Oracle ODBC ドライバーが、接続作成前のドライバーの初期化中に自動コミット モードの設定を無視していたことです。そして、接続がすでに作成された後、自動コミットモードが正しく設定されます。

erlang odbc モジュールの C ソースの修正を作成したところ、問題なく動作するようになりました。Erlang OTP のパッチは、 https://github.com/RubberCthulhu/erlang-odbc-oracle-fixから入手できます。

更新:ニュースは遅れていますが、それでもここでお知らせすることは有益かもしれません. Oracle ODBC に対する私の修正は、Erlang/OTP に含まれています。したがって、R16A 以降、問題は実際のものではなく、Oracle で ODBC を使用する必要がある場合は、Erlang/OTP の最新バージョンを試してください。R14B04-R15B02 のパッチは、https://github.com/RubberCthulhu/erlang-odbc-oracle-fix から入手できます

于 2012-10-25T05:30:07.247 に答える
0

ODBC にはSQLSetConnectAttr()関数があります。SQL_ATTR_AUTOCOMMITと の値で使用でき SQL_AUTOCOMMIT_OFFます。しかし、Erlang から呼び出す方法がわかりません。

于 2012-10-24T08:06:49.523 に答える