往Oracle數據庫中插入NCLOB/CLOB類型數據


    最近因為業務需求開發了一個接口用於接收數據,但是總有一些數據報出ORA-01704:字符串文字太長錯誤。仔細排查后發現,竟然是NCLOB類型字段提示這個錯誤。NCLOB存儲空間有4G,怎么也想不明白為什么會報這個錯誤。原來因為接口插入數據采用字符串拼接的方式。

 

1 string strSql = "insert into tablename (id) values ('" + id.ToString() + "')";

 

而oracle中會把字符串轉為varchar2類型,當字符串非常長,超過4000字符時,就會報ORA-01704錯誤。

所以為了正確插入NCLOB或者CLOB類型的數據,需要如下面寫法

string strSql = "insert into tablename (id) values (:id)";
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand(strSql);

OracleParameter oracPara = new OracleParameter("id", OracleType.NClob);
oracPara.Value = idvalue;

cmd.Parameters.Add(oracPara);

db.ExecuteNonQuery(cmd);

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM