Oracle CLOB以'?'的形式存储阿拉伯数字

时间:2013-10-06 18:51:38

标签: c# oracle c#-4.0 oracle10g arabic

我正在使用Desktop C#应用程序。我的一个字段是 CLOB 类型。我输入的数据在基于C#的变量中分配得非常好,但在Oracle中存储值时,它将数字存储为“?”。例如,如果字符串为 hi123 ,则在存储后会变为 hi ???

只有数字才会发生,阿拉伯语文本中的其他文本保存得很好。

运行查询时:

select dump(CONTENT) from MyTable

给出错误:

[Err] ORA-00932: inconsistent datatypes: expected - got CLOB

以下是插入CLOB的代码

public void InsertCLOB(string SQLStatement, string str)
        {
             System.Data.OracleClient.OracleDataReader rstOracle = null;
             System.Data.OracleClient.OracleCommand sqlCommandOracle = null;
             System.Data.OracleClient.OracleTransaction txn = null;
             System.Data.OracleClient.OracleLob clob = null;
             try
             {
                 if (SQLStatement.Length > 0)
                 {
                     if (myConnection.State.ToString().Equals("Open"))
                     {
                         byte[] newvalue = System.Text.Encoding.Unicode.GetBytes(str);
                         sqlCommandOracle =
                           new System.Data.OracleClient.OracleCommand(SQLStatement, myConnection);
                         rstOracle = sqlCommandOracle.ExecuteReader();
                         rstOracle.Read();
                         txn = myConnection.BeginTransaction();
                         clob = rstOracle.GetOracleLob(0);
                         clob.Write(newvalue, 0, newvalue.Length);
                         txn.Commit();
                         Console.WriteLine("CLOB UPDATED");
                     }
                 }
             }
             catch (Exception ex)
             {
                 Console.WriteLine(ex.TargetSite + " - " + ex.Message);
             }
             finally
             {
                 sqlCommandOracle.Dispose();
                 rstOracle.Close();
                 txn.Dispose();
                 clob.Close();
             }

        }

0 个答案:

没有答案