超过4000字节,用C#怎么存储到CLOB

 我来答
xieshoujian
2011-09-02
知道答主
回答量:75
采纳率:0%
帮助的人:28.6万
展开全部
若要获取 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();
hero_chinawind
推荐于2016-07-07 · TA获得超过313个赞
知道小有建树答主
回答量:611
采纳率:0%
帮助的人:350万
展开全部
如果是oracle,字段选择为long ,可以直接赋值给字段。

如果不能修改字段类型, 用二进制应该可以 updateblob 表名 set clob字段 = blob类型
追问
存储的时候报错,说超过字节长度了,long型的也是一样
追答
long类型可以2g的数据啊,肯定语法有问题。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式