デスクトップ C# アプリケーションに取り組んでいます。私のフィールドの 1 つはCLOB型です。入力したデータは、C# ベースの変数に完全に割り当てられますが、Oracle に値を格納すると、数値が「?」として格納されます。たとえば、文字列がhi۱۲۳の場合、保存すると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();
}
}