1

我尝试使用 ODP.NET 从 ac# 程序执行以下语句:

string sql = "BEGIN dbms_session.set_nls('NLS_NUMERIC_CHARACTERS','''.,'''); END;";
        using (OracleConnection connection = new OracleConnection("Data Source=db;User Id=a;Password=b"))
        {
            connection.Open();
            using (OracleCommand command = new OracleCommand(sql, connection))
            {
                command.ExecuteNonQuery();
            }
            connection.Close();
        }

我检索以下错误消息:

ORA-02074: 无法在分布式事务中设置 NLS

我的代码中没有使用任何事务。OracleConnection 是隐式分布式事务吗?如果我将enlist=false添加到连接字符串中,它就可以工作。但我不知道为什么。

4

2 回答 2

0

我对 C# 了解不多,但是您确定需要 connection.Open() 和 connection.Close() 语句吗?我会假设 using 语句会解决这个问题。

于 2012-06-27T08:44:20.243 回答
0

我的环境中不需要分布式事务,所以我只是通过附加enlist=false到我的连接字符串来解决这个问题。希望它可能对某人有用。

于 2016-07-14T10:44:19.760 回答