超过4000字节,用C#怎么存储到CLOB
2个回答
展开全部
若要获取 OracleLob 对象,请调用 GetOracleLob 方法。
可以使用如下格式构造值为 NULL 的 OracleLob:
OracleLob myLob = OracleLob.Null;
该技术主要用于测试从服务器返回的 LOB 是否为 NULL,如此示例所示:
if( myLob == OracleLob.Null)
NULL LOB 的行为与零字节 LOB 的相似之处在于,Read 成功并始终返回零字节。
选择一个包含空值的 LOB 列可返回 Null。
必须在获取临时 LOB 之前开始事务。否则,OracleDataReader 将不能获取后面的数据。
还可以通过调用 DBMS_LOB.CREATETEMPORARY 系统存储过程并绑定 LOB 输出参数打开 Oracle 中的临时 LOB。在客户端,临时 LOB 的行为很像基于表的 LOB。例如,要更新临时 LOB,它必须包含在事务中。
下面的 C# 示例阐释如何打开一个临时 LOB。
OracleConnection conn = new OracleConnection( "server=MyServer; integrated security=yes; ");
conn.Open();
OracleTransaction tx = conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = tx;
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end; ";
cmd.Parameters.Add(new OracleParameter( "tempblob ", OracleType.Blob)).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(tempbuff,0,tempbuff.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandText = "myTable.myProc ";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter( "ImportDoc ", OracleType.Blob)).Value = tempLob;
cmd.ExecuteNonQuery();
tx.Commit();
可以使用如下格式构造值为 NULL 的 OracleLob:
OracleLob myLob = OracleLob.Null;
该技术主要用于测试从服务器返回的 LOB 是否为 NULL,如此示例所示:
if( myLob == OracleLob.Null)
NULL LOB 的行为与零字节 LOB 的相似之处在于,Read 成功并始终返回零字节。
选择一个包含空值的 LOB 列可返回 Null。
必须在获取临时 LOB 之前开始事务。否则,OracleDataReader 将不能获取后面的数据。
还可以通过调用 DBMS_LOB.CREATETEMPORARY 系统存储过程并绑定 LOB 输出参数打开 Oracle 中的临时 LOB。在客户端,临时 LOB 的行为很像基于表的 LOB。例如,要更新临时 LOB,它必须包含在事务中。
下面的 C# 示例阐释如何打开一个临时 LOB。
OracleConnection conn = new OracleConnection( "server=MyServer; integrated security=yes; ");
conn.Open();
OracleTransaction tx = conn.BeginTransaction();
OracleCommand cmd = conn.CreateCommand();
cmd.Transaction = tx;
cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end; ";
cmd.Parameters.Add(new OracleParameter( "tempblob ", OracleType.Blob)).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(tempbuff,0,tempbuff.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandText = "myTable.myProc ";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter( "ImportDoc ", OracleType.Blob)).Value = tempLob;
cmd.ExecuteNonQuery();
tx.Commit();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询