关于ORACLE里由string转成CLOB存入数据库里的问题

本文介绍了一个使用Oracle数据库存储XML文档的过程。此过程首先将XML内容转换为二进制格式,然后利用Oracle的LOB特性创建临时存储区并写入数据,最后调用存储过程将XML数据保存到数据库中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static XmlDocumentEntity CreateXmlDocumentEntity(int DptID, int FlowType, string XmlContent)       

 {            

 #region 要做ORACLE的   

         if (SysConfig.DataBaseType == "Oracle")     

       {                 byte[] tempBuff = System.Text.Encoding.Unicode.GetBytes(XmlContent);            

    OracleParameter TmpContent = new OracleParameter("tempblob", OracleType.Clob);              

  TmpContent.Direction = ParameterDirection.Output;      

          string tmpSql = "DECLARE A clob;BEGIN  DBMS_LOB.CREATETEMPORARY(A, FALSE); " + ":tempblob := A; " + "END;";                // string tmpSql = "declare xx clob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";   

             IDataParameter[] parameters11 ={                         TmpContent,                    };              

  OracleConnection conn = new OracleConnection(SystemConfig.ConnectionString);        

        OracleCommand comm = new OracleCommand(tmpSql, conn);                conn.Open();              

  OracleTransaction tx;          

      tx = conn.BeginTransaction();         

       comm.Transaction = tx;           

     comm.Parameters.Add(TmpContent);       

         comm.ExecuteNonQuery();         

       OracleLob tempLob = (OracleLob)TmpContent.Value;  

              tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);                tempLob.Write(tempBuff, 0, tempBuff.Length);          

      tempLob.EndBatch();         

       tx.Rollback();          

      conn.Close();            

    OracleParameter Content = new OracleParameter("XmlContent", OracleType.Clob);             

   Content.Value = tempLob;       

         IDataParameter[] parameters = new IDataParameter[]                        {                            Factory.CreateParameter("@DptID",DptID),                            Factory.CreateParameter("@FlowType",FlowType),                           Content                        };             

   IDbHelper DBHelper = Factory.CreateDBAccess();    

            DBHelper.ExecuteNonQuery(SystemConfig.ConnectionString, CommandType.StoredProcedure, "PFlow_SetXmlContent", parameters);                XmlDocumentEntity Entity = new XmlDocumentEntity(DptID, FlowType, XmlContent);                return Entity;            }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值