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

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;            }

}

你可能感兴趣的:(关于ORACLE里由string转成CLOB存入数据库里的问题)